Текущий архив: 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.47 MB
Время: 0.044 c