Delphi-Quellcode:
function bitblt_encode(bild1, bild2:tbitmap):tbitmap;
var
tempbild1,tempbild2:tbitmap;
begin
tempbild1 := tbitmap.create;
tempbild2 := tbitmap.Create;
tempbild1.Assign(bild1);
tempbild2.Assign(bild2);
//hier wird image 1 geändern wenn ide orginalrefferenze übergeben wird !!!
bitblt(result.Canvas.Handle ,0,0,tempbild1.Width,tempbild1.Height,tempbild1.Canvas.Handle,0,0,srccopy);
bitblt(result.Canvas.Handle ,0,0,tempbild2.Width,tempbild2.Height,tempbild2.Canvas.Handle,0,0,srcinvert);
tempbild1.free;
tempbild2.Free;
end;
habe die oben stehende funktion geschreiben und wende sie wie folgt an:
Delphi-Quellcode:
bit1 := tbitmap.Create;
bit2:= tbitmap.Create ;
bit1.LoadFromFile('C:\bild1.bmp');
bit2.LoadFromFile('c:\bild2.bmp');
diffimage := tbitmap.Create;
diffimage2 := tbitmap.Create;
image1.Picture.Bitmap.Assign(bit1);
image2.Picture.Bitmap.Assign(bit2);
diffimage.Assign(bitblt_encode(bit1,bit2));
image1.Picture.Bitmap.Assign(bit1);
image2.Picture.Bitmap.Assign(bit2);
mein problem ist, dass die funktion bit2 ändert .
Ok, das mit den Zeiger versteh ich ja, dass ich der Funktion einen Zeiger auf das BitmapObjekt übergeben, deshalb weiße ich in der Funktion ja dem tempbild2 mit tempbild2.assign(bit2) den inhalt zu und arbeite damit weiter. warum ändert sich also trotzdem bit2 nach dem durchlauf der funktion ???
kann mir jemand erklären wie ich die funkton schreiben müsste, damit sie in keinster weise die ihr übergebenen objekte verändert ???