Для включения JPEG как ресурса в exe файл, необходима конструкция {$R MyRes.RES}. Для извлечения ресурса необходимо создать объект типа TResourceStream и загружать JPEG процедурой LoadFromStream.
Создаем раздел HELP в файле ресурсов, который будет содержать JPEG файл.
{$R MyRes.RES}
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var
MyRS: TResourceStream;
begin
try
MyRS:=TResourceStream.Create(HInstance, 'HELP', RT_RCDATA);
Image1.Picture.LoadFromFile('example.jpg');
if Image1.Picture.Graphic is TJPEGImage then
TJPEGImage(Image1.Picture.Graphic).LoadFromStream(MyRS);
finally
MyRS.Free;
end;
end;
Дополнение:
- Создайте файл скрипта файла ресурсов (MyJpeg.rc) при помощи Блокнота, куда запишите следующее:
1000 RCDATA "Example.jpg"
- Затем, при помощи компилятора ресурсов BRCC32.EXE (при помощи командной строки), скомпилируйте файл скрипта ресурсов в файл ресурсов .RES
BRCC32.EXE MyJpeg.rc
- Добавьте директиву компилятора в исходный код программы. Он должен быть непосредственно после директивы формы:
{$R *.DFM}
{$R MyJpec.res}
Используйте следующий код в Вашем приложении:
uses
{ ... }, JPEG;
procedure LoadPictureEXE;
var
Pic : TJPEGImage;
rs : TResourceStream;
begin
try
Pic := TJPEGImage.Create;
rs := TResourceStream.CreateFromID(HInstance, 1000, RT_RCDATA);
Pic.LoadFromStream(rs);
Form1.Canvas.Draw(0, 0, Pic); // Рисуем JPEG на канвасе формы для примера
finally
Pic.Free; // освобождаем ресурсы
rs.Free; // то же
end;
end;
|