So, ich habe das jetzt mal mit einer Ressourcen-
DLL gemacht.
DLL:
Delphi-Quellcode:
library imagedll;
{$R pokedex.res}
begin
end.
Anwendung mit einem TImage drauf:
Delphi-Quellcode:
uses pngimage;
procedure TForm1.ButtonClick(Sender: TObject);
var
DLLHandle: THandle;
ResStream: TResourceStream;
bmp: TBitmap;
png: TPngImage;
begin
DLLHandle := LoadLibrary(PChar(ExtractFilePath(ParamStr(0)) + 'imagedll.dll'));
if DLLHandle <> 0 then
try
ResStream := TResourceStream.Create(DLLHandle, 'POKEDEX', RT_RCDATA);
try
ResStream.Position := 0;
png := TPngImage.Create;
try
png.LoadFromStream(ResStream);
bmp := TBitmap.Create;
try
bmp.Width := 80;
bmp.Height := 80;
bmp.PixelFormat := pf32Bit;
BitBlt(bmp.Canvas.Handle, 0, 0, bmp.Width, bmp.Height, png.Canvas.Handle, 0, 0, SRCCOPY);
Image1.Picture.Assign(bmp);
finally
bmp.Free;
end;
finally
png.Free;
end;
finally
ResStream.Free;
end;
finally
FreeLibrary(DLLHandle);
end;
end;
Wobei man sich natürlich fragen kann, ob man wirklich die Gesamtgrafik lädt und daraus dann den entsprechenden Ausschnitt herauskopiert oder das nicht vorher macht und die enthaltenen 493 Bildchen einzeln in die Ressource packt (siehe Anhang).