also:
Code: Alles auswählen
procedure TForm1.Button1Click(Sender: TObject);
begin
Brightness(Image2.Picture.Bitmap, Image1.Picture.Bitmap, 50); //dein Aufruf deiner Procedure
end;
das:
Code: Alles auswählen
procedure TForm1.Button1Click(Sender: TObject);
var
Bitmap:TBitmap;
begin
Bitmap:=TBitmap.Create;
try
Brightness(Image2.Picture.Bitmap, Bitmap, 50);
Image1.Canvas.StretchDraw(rect(0,0,Image1.Width,Image1.Height), Bitmap);
finally
Bitmap.Free;
end;
end;
Zwischenspeichern im Stream (Rastern des Bitmaps):
Code: Alles auswählen
procedure TForm1.Button1Click(Sender: TObject);
var
Bitmap:TBitmap;
Stream:TMemoryStream;
begin
Bitmap:=TBitmap.Create;
Stream:=TMemorystream.Create;
try
Brightness(Image2.Picture.Bitmap, Bitmap, 50);
Bitmap.SaveToStream(Stream);
Stream.Position:=0;
Bitmap.LoadFromStream(Stream);
Image1.Canvas.StretchDraw(rect(0,0,Image1.Width,Image1.Height), Bitmap);
finally
Stream.Free;
Bitmap.Free;
end;
end;
Warum das erste Vorgehen funktioniert, stelle ich mir so vor: Das alte Bitmap wird durch das neue Bitmap direkt (Zuweisung der Pointer) ersetzt. Die Dimensionen von Image1 werden dadurch vom neuen Bitmap übernommen! Die Speicherstelle vom Canvas vom Image1 bleibt erhalten (habe ich getestet, in dem ich auf das Canvas zeichnen lassen habe, die Dimensionen des Canvas entsprechen noch dem vom vorherigen Bitmap).
Evtl. gibt es beim zweiten Bsp. Probleme, da das Canvas vom Bitmap nicht mehr zu den Bilddaten des Bitmaps passt??? "Image1.Picture.Bitmap.Assign(Bitmap);" funktioniert wieder (logisch, da wieder direkte Zuweisung des Bitmappointers)!
Das dritte Bsp. funktioniert deswegen wieder, da bei "SaveToStream" das Bitmap gerastert wird und das Canvas wieder neu instanziiert wird?!
Mir geht es nicht darum, einen Workaround zu bekommen bzw. deine Procedure so umzuändern, dass es auch mit dem "Bitmap" funktioniert, das bekomme ich hin. Ich verstehe hauptsächlich nicht, warum das Canvas dann stehenbleibt bzw. wie man das Canvas dann entsprechend mit anpasst (Canvas.clear hatte nur marginale Erfolge, Neusetzen der Bitmap-Dimensionen ebenso...)!