Форум: "Начинающим";
Текущий архив: 2006.09.10;
Скачать: [xml.tar.bz2];
Внизgif и canvas Найти похожие ветки
← →
vain © (2006-08-21 19:06) [0]Как gif загрузить, а потом его прорисовать на canvas"e формы? RxLib стоит.
← →
clickmaker © (2006-08-21 19:13) [1]TRxGifImage
← →
vain © (2006-08-21 19:16) [2]
> TRxGifImage
Думаете, я не знаю такого компонента?
gif можно загрузить в TGIFImage, это я понимаю. А как потом его на canvas формы скопировать?
← →
Джо © (2006-08-21 19:20) [3]> как потом его на canvas формы скопировать?
Draw.
← →
Джо © (2006-08-21 19:21) [4]> [3] Джо © (21.08.06 19:20)
> Draw.
Ну, я так предполагаю. В глаза не видел этой библиотеки.
← →
vain © (2006-08-21 20:06) [5]
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 20:20) [6]> Abstract error. Почему?
Потому, что TGraphic.Draw это абстрактный метод (метод, оставляющий реализацию своим потомкам).
> var
> pict: TGraphic;
Где здесь TRxGifImage?
← →
vain © (2006-08-21 20:22) [7]Ладно, такой вопрос.
Как загрузить картинку (хотя бы битмап), а потом её прорисовать на канве формы?
← →
Джо © (2006-08-21 20:27) [8]> [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;
← →
Джо © (2006-08-21 20:31) [9]> [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;
← →
vain © (2006-08-21 20:32) [10]Можешь объяснить почему FormPaint, а в FormCreate не работает?
А что если не битмап, а jpg, или того хуже - gif?
← →
Джо © (2006-08-21 20:35) [11]> [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:36) [12]
> clickmaker © (21.08.06 19:13) [1]
> vain © (21.08.06 19:16) [2]
Извиняюсь, только заметил. Я перепутал с TRxGIFAnimator. Но всё равно от этого не яснее.
← →
vain © (2006-08-21 20:42) [13]
> Джо ©
Всё. Понял. Огромное спасибо. Главное - я не знал про [11] - теперь знаю.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.09.10;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.043 c