Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.09.10;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.033 c
6-1145611104
alex_s
2006-04-21 13:18
2006.09.10
активность сетевого соединения


15-1155626631
vain
2006-08-15 11:23
2006.09.10
Слежение за реестром


2-1156272009
anton773
2006-08-22 22:40
2006.09.10
Shellexecute


2-1156270047
Chort
2006-08-22 22:07
2006.09.10
ProgressBar1


5-1138111947
Creative
2006-01-24 17:12
2006.09.10
обработчик onKeyDown