@meisteralex:
Es ist schon richtig gesagt worden: es ist nicht sehr elegant eine Instanz als Rückgabewert einer Funktion zu verwenden.
Erstell doch einfach außerhalb der Funktion/Prozedur alle notwendigen Bitmaps, dann übergib' sie der Funktion/Prozedur als Zeiger.
Delphi-Quellcode:
procedure BmpEncode(Bitmap1,Bitmap2,Bitmap3:TBitmap);
begin
// macht was mit Bitmap1 und Bitmap2 und legt das Ergebnis in Bitmap3
end;
So sollte es ohne Probleme funktionieren.
Eleganter finde ich diese Prozedur, wenn man ScanLine nicht braucht und stattdessen mit den relativ schnellen
API-Funktionen arbeitet:
Delphi-Quellcode:
procedure EncodeDCs(SrcDc1,SrcDC2,DestDC:HDC);
begin
// macht was mit SrcDC1 und SrcDC2 und legt das Ergebnis in DestDC
end;
// Aufruf:
EncodeDCs(Bitmap1.Canvas.Handle,Bitmap2.Canvas.Handle,Bitmap3.Canvas.Handle);
Sinnvoll bei sprachübergreifender Programmierung.