Включение JPEG в EXE-файл
|
Пишет один фидошник другому:
- ... и вообще, чем отличается пpогpаммиpование под виндоус от пpосто пpогpаммиpования?
- Да не то, чтобы уж принципиально отличается... а представляешь, чем отличается просто секс от секса на гамаке в штормовую погоду?
|
Я начинающий Delphi программист и только что приступил к
изучению этой замечательной среды разработчика; сейчас передо мной стоит задача
распространения моей самой первой программы. Начиная с третьей версии, 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-файл
строчку с другим индексом для каждого включаемого изображения.
Шаг пятый:
Вызовите процедуру, запустите программу и вуаля! Дело сделано.
|