Подключение ресурса JPEG в *.exe файл

Тема в разделе "Delphi", создана пользователем WinHack, 28 ноя 2016.

  1. WinHack
    Для включения 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;
    Дополнение:

    1.Создайте файл скрипта файла ресурсов (MyJpeg.rc) при помощи Блокнота, куда запишите следующее:
    Код:
    1000 RCDATA "Example.jpg"
    2.Затем, при помощи компилятора ресурсов BRCC32.EXE (при помощи командной строки), скомпилируйте файл скрипта ресурсов в файл ресурсов .RES

    Код:
    BRCC32.EXE MyJpeg.rc
    3. Добавьте директиву компилятора в исходный код программы. Он должен быть непосредственно после директивы формы:

    Код:
    {$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;