Текущий архив: 2006.10.08;
Скачать: CL | DM;
ВнизГрафика Найти похожие ветки
← →
vain © (2006-09-23 21:36) [0]Можно ли завести свой Canvas, не отображая его на форме, а прорисовывать его только в отдельных случаях и как?
Делаю так:
type
TForm1 = class(TForm)
procedure FormPaint(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
Picture: TPicture;
public
end;
var
Form1: TForm1;
implementation
procedure TForm1.FormCreate(Sender: TObject);
var
GIF: TGIFImage;
begin
GIF:= TGIFImage.Create;
Picture:=TPicture.Create;
GIF.LoadFromFile(ResourcePath+IntToStr(i)+".gif");
Picture.Bitmap.Canvas.Draw(0,0,GIF);
GIF.Free;
end;
procedure TForm1.FormPaint(Sender: TObject);
begin
Self.Canvas.Draw(0,0,Picture.Bitmap.Canvas);
end;
Не работает - почему?
← →
ProgRAMmer Dimonych (2006-09-23 21:44) [1]Предлагаю завести TBitmap и рисовать на TBitmap.Canvas. Потом копируем на канву формы или ещё чего. Только надо быть осторожным: TBitmap есть в модулях Graphics и Windows, но они там совсем разные. В данном случае нужен TBitmap из Graphics.
← →
vain © (2006-09-23 21:54) [2]
> ProgRAMmer Dimonych (23.09.06 21:44) [1]
Переделал на:
procedure TForm1.FormCreate(Sender: TObject);
var
GIF: TGIFImage;
begin
GIF:= TGIFImage.Create;
Bitmap:= TBitmap.Create;
GIF.LoadFromFile(ResourcePath+"1.gif");
Bitmap.Canvas.Draw(0,0,GIF);
GIF.Free;
end;
procedure TForm1.FormPaint(Sender: TObject);
var
Rect: TRect;
begin
Rect.Left:= 0; Rect.Top:= 0;
Rect.Right:= 600; Rect.Bottom:= 450;
Self.Canvas.CopyRect(Rect, Bitmap.Canvas, Rect);
end;
Не рботает.
А как использовать TBitmap именно из Graphics?
← →
ProgRAMmer Dimonych (2006-09-23 22:33) [3]Хотел попробовать сделать что-то похожее сам, но не получилось... В каком модуле находится TGIFImage?
← →
vain © (2006-09-23 23:18) [4]
> ProgRAMmer Dimonych
RxGIF из библиотеки RxLib. Да с JPEGImage тоже самое. Был бы очень благодарен, если бы вы привели пример с Jpge"ом.
← →
ProgRAMmer Dimonych (2006-09-23 23:50) [5]Собственно, готово.
Вообще, если надо только прорисовать картинку на форме, то можно не использовать никаких TPicture и TBitmap. Берём TJPEGImage или TGIFImage, создаём (в нужный момент или, если он понадобится не один и не два раза, то при создании формы). Затем, когда нужна прорисовка, пишем:
FormName.Canvas.Draw(X,Y,ImageName);
где FormName - имя формы, X и Y - координаты левого верхнего угла картинки на форме, ImageName - объект-наследник TGraphic, в котором находится картинка.
Вместо FormName можно использовать любой контрол, у которого есть канва.
***********************
Если нужна ещё и обработка
***********************
Надо сказать, в который раз я уже попадаюсь на одной и той же ошибке. У меня сразу тоже не получилось. Прикол здесь вот в чём. Канва битмапа обрезается до размера битмапа... А сразу после создания битмап имеет Width и Height равные 0. Поэтому Bitmap"чик-то прорисовывается, а вот загружается не весь. Придётся битмаповым Width и Height присваивать значения сответствующих свойств TJPEGImage или TGIFImage (я подозреваю, что у него они тоже есть) до копирования изображения в битмап.
← →
vain © (2006-09-24 00:01) [6]
> Вообще, если надо только прорисовать картинку на форме,
> то можно не использовать никаких TPicture и TBitmap. Берём
> TJPEGImage или TGIFImage, создаём (в нужный момент или,
> если он понадобится не один и не два раза, то при создании
> формы). Затем, когда нужна прорисовка, пишем:
>
> FormName.Canvas.Draw(X,Y,ImageName);
> где FormName - имя формы, X и Y - координаты левого верхнего
> угла картинки на форме, ImageName - объект-наследник TGraphic,
> в котором находится картинка.
>
Это я и так знал. Мне было интересно узнать способ хранения канвы.
> Надо сказать, в который раз я уже попадаюсь на одной и той
> же ошибке. У меня сразу тоже не получилось. Прикол здесь
> вот в чём. Канва битмапа обрезается до размера битмапа..
> . А сразу после создания битмап имеет Width и Height равные
> 0. Поэтому Bitmap"чик-то прорисовывается, а вот загружается
> не весь. Придётся битмаповым Width и Height присваивать
> значения сответствующих свойств TJPEGImage или TGIFImage
> (я подозреваю, что у него они тоже есть) до копирования
> изображения в битмап.
>
А вот за это огромное(!) спасибо! Поэтому и не отображалось, что битмап был 0x0.
← →
ProgRAMmer Dimonych (2006-09-24 00:07) [7]Был рад помочь...
Страницы: 1 вся ветка
Текущий архив: 2006.10.08;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.042 c