Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.167 Beiträge
 
Delphi 12 Athens
 
#9

AW: physikalische Kopie einer Bitmap

  Alt 10. Feb 2020, 16:16
Lock/Unlock brauchst vor allem bei Multithread, damit nicht zwei Zeichenoperationen gleichzeitig auf dem Bitmap arbeiten.

Delphi-Quellcode:
R := Rect(0, 0, Bitmap1.Width,Bitmap1.Height); // deine Rects sind ja gleich, da brauchst dann nur Eins
//Bitmap2.PixelFormat := Bitmap1.PixelFormat;
Bitmap2.SetSize(Bitmap1.Width, Bitmap1.Height);
Bitmap2.Canvas.CopyRect(R, Bitmap1.Canvas, R);

// bzw.

//Bitmap2.PixelFormat := Bitmap1.PixelFormat;
Bitmap2.SetSize(Bitmap1.Width, Bitmap1.Height);
Bitmap2.Canvas.Draw(0, 0, Bitmap1);

@dummzeuch: Hmmm, hab hier grad eben nur 'nen XE am Laufen, (glaub aber kaum, dass am TBitmap in den letzten Jahrzehnten viel geändert wurde)
aber procedure TBitmap.Assign(Source: TPersistent); kopiert da nirgendwo irgendwas
und selbst das TBitmap(Source).FImage.Reference; darin macht am Ende nichts.
Delphi-Quellcode:
procedure TSharedImage.Reference;
begin
  Inc(FRefCount);
end;
Aber vielleicht wird erst beim Zugriff auf die Pixels die Referenz dann aufgelöst, damit es dort dann keine weitere Referenz auf den Bildspeicher gibt.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (10. Feb 2020 um 16:21 Uhr)
  Mit Zitat antworten Zitat