Главная страница
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.03 c
6-1147710288
dmitrlast
2006-05-15 20:24
2006.10.08
Где б найти про IDFTPServer?


2-1158429959
greengeneral
2006-09-16 22:05
2006.10.08
Перенос переменной из одного Unit в другой


6-1146062611
Ragim
2006-04-26 18:43
2006.10.08
PGP


2-1158928058
Crazy monkey
2006-09-22 16:27
2006.10.08
Как сократить запись?


3-1154864407
ironwit
2006-08-06 15:40
2006.10.08
бакуп FB как embedded