Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.051 c
2-1156172322
Sele
2006-08-21 18:58
2006.09.10
перемещение


2-1155798441
KyRo
2006-08-17 11:07
2006.09.10
Не выключается виндовс с запущеной программой


15-1155618462
Ega23
2006-08-15 09:07
2006.09.10
С Днём рождения! 15 августа


9-1134977358
Strech
2005-12-19 10:29
2006.09.10
Пересечение окружности с прямоугольником


2-1156081436
ronyn
2006-08-20 17:43
2006.09.10
Filter





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский