Главная страница
    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.47 MB
Время: 0.043 c
2-1156272009
anton773
2006-08-22 22:40
2006.09.10
Shellexecute


15-1155627978
umbra
2006-08-15 11:46
2006.09.10
вопрос про статическую библиотеку и С


15-1155928156
ronyn
2006-08-18 23:09
2006.09.10
Как прописать программно приложение в автозагрузку?


15-1155588168
ronyn
2006-08-15 00:42
2006.09.10
Автозагрузка в Win2000


8-1140529733
hh_speed
2006-02-21 16:48
2006.09.10
как узнать частоту кадров у AVI





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский