Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Графика и игры
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 20.12.2010, 04:12
Templar Templar вне форума
Прохожий
 
Регистрация: 20.12.2010
Сообщения: 2
Репутация: 10
По умолчанию Отмена действий на рисунке через 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  
Старый 20.12.2010, 08:30
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,024
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Код:
img.Canvas,bounds(0,0,img.Width,img.Height)); // рисуем в пейнтбокс

И что там делает зпт?
Да и что-то я не уверен, что есть такой метод. Обычно отрисовка это Draw или StretchDraw.
Ответить с цитированием
  #3  
Старый 20.12.2010, 10:39
Аватар для ryderx34
ryderx34 ryderx34 вне форума
Активный
 
Регистрация: 22.01.2010
Сообщения: 211
Версия Delphi: 7, 2010
Репутация: 1349
По умолчанию

Я тоже сразу на это обратил внимание, но когда пригляделся оказалось что это просто передаваемые параметры:
Код:
PaintBox1.Canvas.CopyRect(bounds(0,0,img.Width,img.Height), 
img.Canvas,bounds(0,0,img.Width,img.Height)); // рисуем в пейнтбокс

Templar, напиши текст сообщения об ошибке.
Ответить с цитированием
  #4  
Старый 20.12.2010, 22:04
Templar Templar вне форума
Прохожий
 
Регистрация: 20.12.2010
Сообщения: 2
Репутация: 10
По умолчанию

Спасибо, уже не надо, разобрался. У меня 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.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 18:40.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter