Включение JPEG в EXE-файл

Начиная с третьей версии, Delphi содержит модуль jpeg, позволяющий работать с этим форматом изображений, и у меня встала задача включить jpeg-графику в мой исполнимый файл для последующего использования в программе, но как это осуществить я пока не знаю.

Нет проблем! Выполните пять простых шагов, описанных ниже, и вы поймете все эту сложную, на первый взгляд, технологию.

Шаг первый:

Создайте файл сценария ресурса (*.RC) в обычном текстовом редакторе типа Notepad и добавьте следующую строку:

1 RCDATA «MyPic.jpg»

Первый элемент является просто индексом ресурса. Второй элемент указывает на определенный пользователем ресурс. Третий, он же последний элемент, является именем jpeg-файла.

Шаг второй:

Для компиляции ресурса в .RES-файл используйте Borland Resource Compiler, BRCC32.EXE. В командной строке MS-DOS введите:

BRCC32 MyPic.RC

Это создаст файл ресурса с именем MyPic.RES.

Шаг третий:

Добавьте директиву компилятора к исходному коду вашей программы. Она должна располагаться непосредственно за директивой формы, как показано ниже:

{$R *.DFM}

{$R MyPic.RES}

Шаг четвертый:

Добавьте следующий код к вашему проекту (для этого я создал процедуру):

procedure LoadJPEGfromEXE;

var

MyJPG: TJPEGImage; // Объект - JPEG

ResStream: TResourceStream; // Объект - поток ресурсов

begin

try

MyJPG := TJPEGImage.Create;

ResStream := TResourceStream.CreateFromID(HInstance, 1, RT_RCDATA);

MyJPG.LoadFromStream(ResStream); // Что!? Да, это просто!

Canvas.Draw(12, 12, MyJPG);

// сделайте это, чтобы увидеть что это действительно работает!

finally

MyJPG.Free;

ResStream.Free;

end;

end; // procedure

Обратили внимание на второй параметр процедуры CreateFromID объекта TResourceStream? Это просто индекс ресурса. Вы можете включить более одного jpeg-изображения в исполняемый модуль приложения, просто добавляя в .RC-файл строчку с другим индексом для каждого включаемого изображения.

Шаг пятый:

Вызовите процедуру, запустите программу и вуаля! Дело сделано.

Добавить комментарий