Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Komplettes Canvas kopieren (https://www.delphipraxis.net/168159-komplettes-canvas-kopieren.html)

Root2k 8. Mai 2012 13:01

Komplettes Canvas kopieren
 
Hi,

ich habe gerade ein kleines Problem mit einem Canvas-Objekt einer TPaintbox.

Meine Ausgangssituation:
- Ich habe eine von TPaintbox abgeleitete Komponente.
- Ich zeichne auf die Canvas-Fläche der Paintbox.
- Nun soll die gesamte Zeichenfläche kopiert werden.

Das Problem:
- Es wird nur der sichtbare Teil des Canvas kopiert. Bzw. es wird auch ein Teil der äußeren Form mitkopiert (die eben teilweise über dem Canvas liegt).


Kann ich irgendwie dafür sorgen, dass alles kopiert wird?
Ich steht grad mächtig auf dem Schlauch.

Bin für jede Hilfe dankbar!

Derzeit kopiere ich die Fläche auf diese Weise (innerhalb der abgeleiteten Paintbox-Komponente):
Delphi-Quellcode:
  tmpZwischenBitmap := TBitmap.Create;
  tmpZwischenBitmap.Width := Self.Width; // Self.Width => Breite der Paintbox
  tmpZwischenBitmap.Height := Self.Height; // Self.Height => Breite der Paintbox
  r:=rect(0, 0, tmpZwischenBitmap.Width, tmpZwischenBitmap.Height);
  tmpZwischenBitmap.Canvas.CopyRect(r, Self.Canvas, r);
PS: Habe auch schon im Internet gesucht, aber nie eine passende Lösung gefunden.

jaenicke 8. Mai 2012 13:05

AW: Komplettes Canvas kopieren
 
Eine TPaintbox behält ihren Inhalt nicht. Normalerweise zeichnet man auch nicht direkt darauf um ein Flackern zu vermeiden. Ein Beispiel findest du hier:
http://www.michael-puff.de/Programmi...enBitmap.shtml
Auf die Weise hast du den aktuellen Inhalt auch gleich in der Hintergrundbitmap parat.

Root2k 8. Mai 2012 13:25

AW: Komplettes Canvas kopieren
 
Danke für die schnelle und gute Antwort!
Ich versuche mich gleich mal an der Umsetzung. Bedeutet nun leider ein Stück Arbeit.

Edit:
Funktioniert wunderbar und ging doch schneller als gedacht.
Vielen, vielen Dank!!! :thumb::thumb::thumb:

*closed*


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:46 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz