Hey Leute,
leider hat Google und die Foren-Suche ausnahmsweise mal nichts brauchbares ergeben
Ich verstehe einfach nicht, warum StretchBlt bei mir nicht die richtige Wirkung erziehlt (bzw überhaupt irgendeine Wirkung wäre schon gerne gesehen).
Was passieren soll habe ich im Anhang skizziert.
Folgender Code:
Delphi-Quellcode:
procedure SetPic(l_picname : String);
var l_Image : TImage;
l_Src_Bitmap, l_Dest_Bitmap : TBitmap;
begin
//initialisieren...
l_Image := TImage.Create(Self);
l_Src_Bitmap := TBitmap.Create;
l_Dest_Bitmap := TBitmap.Create;
try
//Bild laden...
l_Image.Picture.LoadFromFile(l_picname);
//Bild auf Quellleinwand schreiben...
l_Src_Bitmap.Assign(l_Image.Picture.Graphic);
//An dieser Stelle lasse ich mir die Abmessungen des Bitmap ausgeben und kann somit mit
//Sicherheit sagen, dass auf jeden Fall die Datei geladen und hinein geschrieben wird.
//Außerdem habe ich ausprobiert das l_src_Bitmap am Ende dem Bild zuzuweisen, das funktioniert, nur natürlich ohne resize
//Bild auf Zielleinwand schreiben...
SetStretchBltMode(l_Src_Bitmap.Canvas.Handle,HALFTONE); //Ich bin mir nich sicher wo ich die BltMode umstellen muss
SetStretchBltMode(l_Dest_Bitmap.Canvas.Handle,HALFTONE); //Ich bin mir nich sicher wo ich die BltMode umstellen muss
StretchBlt(l_Dest_Bitmap.Canvas.Handle,
0, 0, Image1.Width, Image1.Height,
l_Src_Bitmap.Canvas.Handle,
0, 0, l_Src_Bitmap.Width, l_Src_Bitmap.Height,
SRCCOPY);
//Fertige Bild von Zielleinwand auf TImage-Komponente anzeigen...
Image1.Picture.Assign(l_Dest_Bitmap);
finally
l_Image.Free;
l_Src_Bitmap.Free;
l_Dest_Bitmap.Free;
end;
end;
Das Image enthält vor Aufruf der Methode ein Bild, nach Aufruf ist es leer. Also scheint das Assign ein leeres Bitmap zuzuweisen. Aber warum schreibt StretchBlt nicht in das l_Dest_Bitmap?
Vielen Dank schon im Voraus!