Ich bin mir gerade nicht ganz sicher, aber ist das interne Format in 'nem TBitMap nicht eh schon DIB?
Also wenn das so ist, könnte man sich ja eventuell den Pointer darauf besorgen und somit ein bissl Zeit sparren ... im Moment wird ja ein neues Bild (in Variable Image) erstlle und freigegeben.
Mir war auch schon der gedanke gekommen, daß man auf die INFO verzichten könnte, aber ich glaub mal nicht, daß es hier geht -.-''
Also etwa so?
Delphi-Quellcode:
procedure TDisplay.BMPtoPointer(Bitmap: TBitmap);
var
Image : Pointer;
ImageSize : DWord;
begin
with Bitmap
do
begin
GetDIBSizes(
Handle, InfoSize, ImageSize);
Image := AllocMem(ImageSize);
try
GetDIB(
Handle, Palette,
nil, Image^);
{ Bild an das Display übergeben }
_Bitmap(0, 0, 30, 120, 0, 0, Width, Height, 320, 240, Image);
// umsetung von LUI_Bitmap
finally
FreeMem(Image, ImageSize);
end;
end;
end;
PS: falls du Lust hast ... es geht auch kürzer (mußt nicht jedesmal INTEGER einzeln angeben) ^_^
Delphi-Quellcode:
Function LUI_Bitmap(DevNum: Integer; ScreenNr: Byte; ScreenPosX, ScreenPosY,
BMPoffsetX, BMPoffsetY, BMPWidth, BMPHigh, BMPdataWidth, BMPdataHigh: Integer;
Bitmap: Pointer): Byte; StdCall; External 'LUIse.dll';