|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Отмена действий на рисунке через DrawGrid
В общем, суть такова, что любое изменение рисунка заносится в DrawGrid. При нажатии кнопки - должно вырисовывать значение ячейки DrawGrid'a -1. Вот участок кода, отвечающий за отмену, но почему-то выбивающий ошибку. Помогите разобраться плз
Код:
if i>0 then begin i:=i-1; //счетчик ячеек bitmap.Height:=DrawGrid1.DefaultRowHeight; //Высота битмапа по высоте ячейки bitmap.Width:=DrawGrid1.DefaultColWidth; //Ширина битмапа по ширинее ячейки bitmap.Canvas.CopyRect(DrawGrid1.CellRect(0,i),bitmap.Canvas,bounds(0,0,bitmap.Width,bitmap.Height)); //Копируем содержание ячейки в битмап Image1.Picture.Bitmap:=bitmap; //Присваиваем Image содержние битмапа img.Width:=Image1.ClientWidth; //Ширина условного изображения по ширине Image buffer.Height:=Image1.ClientHeight; //Тоже самое img.Height:=Image1.ClientHeight; //Высота условного изображения по высоте Image buffer.Height:=Image1.ClientHeight; //Тоже самое PaintBox1.ClientHeight:=Image1.ClientHeight; //Высота и ширина пейнтбокса по имеджу PaintBox1.ClientWidth:=Image1.ClientWidth; // img.Canvas.CopyRect(bounds (0,0,Image1.Width,Image1.Height),Image1.Canvas,bounds(0,0,Image1.Width,Image1.Height)); // Копируем содержание Имеджа в условное изображение buffer.Assign(img); // Тоже самое PaintBox1.Canvas.CopyRect(bounds(0,0,img.Width,img.Height), img.Canvas,bounds(0,0,img.Width,img.Height)); // рисуем в пейнтбокс end; Зы, просьба руки не ломать, только учусь) |
#2
|
|||
|
|||
Код:
img.Canvas,bounds(0,0,img.Width,img.Height)); // рисуем в пейнтбокс И что там делает зпт? Да и что-то я не уверен, что есть такой метод. Обычно отрисовка это Draw или StretchDraw. |
#3
|
||||
|
||||
Я тоже сразу на это обратил внимание, но когда пригляделся оказалось что это просто передаваемые параметры:
Код:
PaintBox1.Canvas.CopyRect(bounds(0,0,img.Width,img.Height), img.Canvas,bounds(0,0,img.Width,img.Height)); // рисуем в пейнтбокс Templar, напиши текст сообщения об ошибке. |
#4
|
|||
|
|||
Спасибо, уже не надо, разобрался. У меня DrawGrid не перерисовывался, да и как его перерисовать-то я не сильно-то и понял, так как у меня туда заносилось каждое изменение. Сейчас делаю через ImageList, принцип тот же. И все равно не работает)
Код:
procedure TForm1.Imagelisting; begin If (i<=50) and (i>=1) then begin Image1.Picture.Bitmap:=bitmap; ImageList1.Height:=img.Width; ImageList1.Width:=img.Height; bitmap.Transparent:=True; ImageList1.InsertMasked(i,bitmap,bitmap.TransparentColor); i:=i+1; end else begin for i:=50 downto 1 do begin GetImgListBitmap(ImageList1, i, Bitmap); bitmap.Transparent:=true; Imagelist1.ReplaceMasked(i-1,bitmap,bitmap.TransparentColor); end; i:=50; end; end; Генерирует сообщение "Unable to Replace Image" ------------------------------- нашел ошибку, почему так выходит. В событии формы oncreate i:=1;, но данная процедура почему игнорирует это Последний раз редактировалось Templar, 20.12.2010 в 22:24. |