Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.10.08;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.04 c
2-1158576037
stfu
2006-09-18 14:40
2006.10.08
Создание графиков в Excel e


15-1158435160
Ajax
2006-09-16 23:32
2006.10.08
Включение компьютера без видеокарты


1-1156346723
trackbar
2006-08-23 19:25
2006.10.08
TrackBar и рамка фокуса


15-1158049191
meister
2006-09-12 12:19
2006.10.08
Рассылка


15-1158316984
Тульский
2006-09-15 14:43
2006.10.08
Visual Prolog





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский