Если Вы хотите делать приложения, которые будут иметь скины, менять внешний вид без сторонных компонентов, то изображения удобнее всего хранить в Dll с ресурсами, чтобы пользователь не смог изменить файлы изображений, а также случайно удалить. Но как же извлечь глифы для кнопок (TBitBtn, TSpeedButton и т.д.)? Ответ ниже, в исходном коде. Код простой, поэтому без комментариев:
uses
{ ... }, JPEG;
{ ... }
private
{ Private declarations }
procedure LoadGlyph(Sender: TObject);
{ ... }
var
Form1: TForm1;
h: HWND;
{$IFDEF WIN32}
const BadDllLoad = 0;
{$ELSE}
const BadDllLoad = 32;
{$ENDIF}
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
h:= LoadLibrary('appres.dll');
if h <= BadDllLoad then
ShowMessage('Не могу загрузить DLL!')
else
LoadGlyph(Self);
end;
procedure TForm1.LoadGlyph(Sender: TObject);
var
strm: TResourceStream;
image: TJPEGImage;
bmp: TBitmap;
begin
image:= TJPEGImage.Create;
strm:= TResourceStream.Create(h, '#4', RT_RCDATA);
strm.Seek(0, soFromBeginning);
image.LoadFromStream(strm);
Image1.Canvas.Draw(0, 0, image);
image.Free;
strm.Free;
image:= TJPEGImage.Create;
bmp:= TBitmap.Create;
strm:= TResourceStream.Create(h, '#3', RT_RCDATA);
strm.Seek(0, soFromBeginning);
image.LoadFromStream(strm);
bmp.Assign(image);
BitBtn1.Glyph:= bmp;
bmp.Free;
strm.Free;
image.Free;
end;
Изображения в ресурсах находятся в JPG формате, так они занимают меньше места, чем BMP.
И не забудьте уничтожить дескриптор библиотеки при закрытии приложения!
|
Комментарии
I had a quick question in which I'd like to ask if
you don't mind. I was interested to find out how you center
yourself and clear your mind prior to writing. I've had trouble clearing my thoughts in getting my
thoughts out there. I truly do take pleasure in writing but it just seems like the
first 10 to 15 minutes tend to be lost just trying to figure
out how to begin. Any suggestions or tips? Cheers!
RSS лента комментариев этой записи