![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Рисунок из ресурса. [D7, WinXP]
X9 © (2004-03-10 09:46:00)Уважаемые Мастера! Может ли кто-нибудь поделиться алгоритмом извлечения рисунка из ресурса. Как делаю я: создаю файл .rc, в нём указываю имя ресурса, его тип и имя исходного файла, например:
---------------------MyRes.rc--------------------
MYGIF GIF "Images\MyGif.gif"
-------------------------------------------------
Затем компилирую его brcc32.exe и полученный .res-файл подключаю в модуле:
--------------------Unit1.pas--------------------
.................................................
{$R MYRES.res}
.................................................
-------------------------------------------------
Потом в обработчике события TForm1.Button1Click пишу:
-------------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
var MS: PStream;
Gif: TGifShow; {Компонент KolGif, скачанный с kol.mastak.ru}
begin
MS := NewMemoryStream;
Gif := NewGifShow(Form1.Form); {создаём KolGif динамически}
Resource2Stream(MS, hInstance, 'MYGIF', 'GIF');
Gif.LoadFromStream(MS);
Form1.Form.Canvas.Brush.BrushBitmap := Gif.Canvas.Brush.BrushBitmap;
//Gif.Show; {Тоже не помогает}
MS.Free;
end;
-------------------------------------------------
При нажатии на батон в TaskManager'е видно, что размер памяти, занимаемый программой, увеличивается примерно на размер ресурса (немного больше). Пробовал использовать KolGraphics (тоже с kol.mastak.ru) - эффект тот же. Кто нибудь может мне подсказать что я делаю не так и если можно, то прошу выложить кусок правильного кода. Plz!!!
X9 (2004-03-11 04:58:00) [1]Спасибо, попробую.
<Falcon> (2004-03-10 13:15:00) [2]Во первых при создании ресурса:
---------------------MyRes.rc--------------------
MYGIF RCDATA "MyGif.gif"
-------------------------------------------------
Во вторых при использовании GifShow необязательно передавать ресурс через поток, можно загружать напрямую из ресурса (если не ошибаюсь через поток он все равно передается, это сделано в самом компоненте)
В третьих вместо всего кода что ты написал, используй:
GifShow1.LoadfromResource