Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.10.08;
Скачать: CL | DM;

Вниз

Хранение графических ресурсов ..   Найти похожие ветки 

 
SPACE!!   (2006-09-16 12:42) [0]

Вобщем ситуация такая, программа использует статическо-графический интерфейс который включает в себя графические
файлы , тоесть в зависимости от разрешения экрана загружаются соответствующиеся изображения (png, jpg).
Мне нужно либо объеденить это все в один фаил содержащий
эти ресурсы либо впихнуть все в exe-шник. Теоретически
я понимаю что можно к примеру сделать dll или же как-то
впихнуть их в .res , но к своему стыду как это реализовать не знаю. Примеры и подробнейшая теория приветствуется.


 
cp.Silver ©   (2006-09-16 16:34) [1]

Про создание файлов-ресурсов читай тут:
http://delphiworld.narod.ru/base/compile_resources.html
И вообще посмотри весь сайт. Там ответы на все твои вопросы :)


 
SPACE!!   (2006-09-17 20:07) [2]

Спасибо несовсем то так-как все примеры основаны на использование BITMAP, но направление правильное. Чуть покапав в этом направление я нашел как засунуть jpg . Навсякий случай показываю.

1. Делаем TEST.TXT переименовываем в TEST.RC.
2. Вводим данные в TEST.RC :
1 RCDATA "D:\images\800\F800.jpg"
где 1 это индификатор , RCDATA тип данных ну а "D:\images\800\F800.jpg" это
путь к файлу (незабудьте кавычки)
3. Используем brcc32.exe для конвертирования RC в RES :
D:\DelphiPath\Bin\brcc32.exe TEST.RC

brcc32  является консольным приложением  я использовал дос оболочку Dos Navigator, можно воспользоваться командной строкой windows или-же в свойствах ярлыка указать параметры запуска.

Все фаил ресурса готов. Осталось подключить его к модулю . Для этого
просто после директивы {$R *.dfm} пишем {$R Test.RES} все.

Переходим к коду :


unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, ExtCtrls,Jpeg, pngextra,pngimage;
type
 TForm1 = class(TForm)
   Image1: TImage;
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

//===========================================================

type
TImageType =(imPng,imJpeg);
// Обратите внимания этот тип использует процедура LoadImageFromRes .

//===========================================================

var
 Form1: TForm1;

implementation

{$R *.dfm}
{$R Test.RES}

procedure LoadImageFromRes(ID : Integer; ThePicture : TPicture;ImageType : TImageType);
var
 JPG: TJPEGImage;
 ResStream: TResourceStream;
 png : TPNGObject;
// TpngObject находится в модуле pngimage.pas (компонент  TPNGImage)
begin
case ImageType of
imPng :
 begin
  try
   png := TPNGObject.Create;
   ResStream := TResourceStream.CreateFromID(HInstance, ID, RT_RCDATA);
   png.LoadFromStream(ResStream);
   ThePicture.Assign(png);
 finally
   png.Free;
   ResStream.Free;
 end;
end;
imJpeg :
 begin
  try
   JPG := TJPEGImage.Create;
   ResStream := TResourceStream.CreateFromID(HInstance, ID, RT_RCDATA);
   JPG.LoadFromStream(ResStream);
   ThePicture.Assign(JPG);
  finally
   JPG.Free;
   ResStream.Free;
  end;
 end;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
LoadImageFromRes(1,Image1.Picture,imJpeg)
end;


Помимо JPG, процедура LoadImageFromRes работает и с png для использования png в проекте я использовал компонент TPNGImage 1.5 .

Вобще конешно лучше держать графику отдельно от exe-шника согласитесь обновление как exe так и графического интерфейса будет занимать меньший
объем. Да и вопще сувать все в exe считается неправильным решением.
Ну да ладно пока пойдет и так.


 
cp.Silver ©   (2006-09-20 00:57) [3]


> Да и вопще сувать все в exe считается неправильным решением.


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


 
SPACE!!   (2006-09-20 01:26) [4]

Ну речь идет не только о графики а о данных в целом представляешь себе
exeшник размером 1gb ... Другое дело когда данные находятся вне exe структуированы и находятся на разных так сказать полочках . Что
касается порчи и удаления , то это извини неубедительно. Вконце концов
пускай инсталяторы всегда держат под рукой :)


 
cp.Silver ©   (2006-09-20 01:32) [5]

Уговорил :) Просто насчет удаления я вспомнил, т.к. это для меня больная тема.  В свое время лет 7 назад практически к каждому пользователю наших программ приходилось ездить и восстанавливать ими же удаленные куски программ. Поэтому привычка просчитывать все до мелочей осталась :)



Страницы: 1 вся ветка

Текущий архив: 2006.10.08;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.044 c
15-1158480993
Весь в делах
2006-09-17 12:16
2006.10.08
Разработка


15-1158407045
WesT-N-GooD
2006-09-16 15:44
2006.10.08
Многоязыковая поддержка Windows-приложений


1-1156880849
Loginov Dmitry
2006-08-29 23:47
2006.10.08
RTTI


10-1124092462
DimMih
2005-08-15 11:54
2006.10.08
Вставка изображения в AutoCad


8-1142450207
realSanek
2006-03-15 22:16
2006.10.08
Как вывести текст, выкручивающийся по спирали из точки?