![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
gif и canvas
vain © (2006-08-21 19:06:00)Как gif загрузить, а потом его прорисовать на canvas'e формы? RxLib стоит.
vain (2006-08-21 20:42:00) [1]
> Джо ©
Всё. Понял. Огромное спасибо. Главное - я не знал про [11] - теперь знаю.
vain (2006-08-21 20:36:00) [2]
> clickmaker © (21.08.06 19:13) [1]
> vain © (21.08.06 19:16) [2]
Извиняюсь, только заметил. Я перепутал с TRxGIFAnimator. Но всё равно от этого не яснее.
Джо (2006-08-21 20:35:00) [3]> [10] vain © (21.08.06 20:32)
> Можешь объяснить почему FormPaint, а в FormCreate не работает?
Могу. Потому, что Canvas формы перерисовывается тогда, когда посчитает это нужным. Ты нарисовал картинку в OnCreate, а затем система ее затерла. Обработчик же события OnPaint как раз и вызывается всякий раз при перерисовке формы. И ты каждый раз в нем восстанавливаешь свою картинку.
> [10] vain © (21.08.06 20:32)
> А что если не битмап, а jpg, или того хуже - gif?
Для них есть соответствующие классы. Для Jpeg есть стандартный — TJpegImage (uses Jpeg), для Gif — множество сторонних (один из них тебе назвали).
vain (2006-08-21 20:32:00) [4]Можешь объяснить почему FormPaint, а в FormCreate не работает?
А что если не битмап, а jpg, или того хуже - gif?
Джо (2006-08-21 20:31:00) [5]> [8] Джо © (21.08.06 20:27)
На всякий случай добавлю, что я знаю, что мой пример очень неоптимален и приведен лишь для иллюстрации. Чтобы не "учить плохому стилю", приведу более удачный пример, замутняющий, впрочем, суть вопроса.
TForm1 = class(TForm)
procedure FormPaint(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
FBitmap: TBitmap;
public
end;
...
procedure TForm1.FormPaint(Sender: TObject);
begin
Canvas.Draw (0,0,FBitmap)
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
FBitmap := TBitmap.Create;
FBitmap.LoadFromFile('...');
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
FBitmap.Free
end;
Джо (2006-08-21 20:27:00) [6]> [7] vain © (21.08.06 20:22)
> Как загрузить картинку (хотя бы битмап), а потом её прорисовать
> на канве формы?
procedure TForm1.FormPaint(Sender: TObject);
var
Bmp: TBitmap;
begin
Bmp := TBitmap.Create;
try
Bmp.LoadFromFile('1.bmp');
Canvas.Draw(0,0,Bmp);
finally
Bmp.Free;
end;
end;
vain (2006-08-21 20:22:00) [7]Ладно, такой вопрос.
Как загрузить картинку (хотя бы битмап), а потом её прорисовать на канве формы?
Джо (2006-08-21 20:20:00) [8]> Abstract error. Почему?
Потому, что TGraphic.Draw это абстрактный метод (метод, оставляющий реализацию своим потомкам).
> var
> pict: TGraphic;
Где здесь TRxGifImage?
vain (2006-08-21 20:06:00) [9]
procedure TForm1.FormCreate(Sender: TObject);
var
pict: TGraphic;
begin
Pict:= TGraphic.Create;
Pict.LoadFromFile('1.bmp');
Form1.Canvas.Draw(5, 5, pict);
end;
Abstract error. Почему?
Джо (2006-08-21 19:21:00) [10]> [3] Джо © (21.08.06 19:20)
> Draw.
Ну, я так предполагаю. В глаза не видел этой библиотеки.
Джо (2006-08-21 19:20:00) [11]> как потом его на canvas формы скопировать?
Draw.
vain (2006-08-21 19:16:00) [12]
> TRxGifImage
Думаете, я не знаю такого компонента?
gif можно загрузить в TGIFImage, это я понимаю. А как потом его на canvas формы скопировать?
clickmaker (2006-08-21 19:13:00) [13]TRxGifImage