Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi nur Bereiche neuzeichnen (https://www.delphipraxis.net/79118-nur-bereiche-neuzeichnen.html)

Matze 17. Okt 2006 22:03

Re: nur Bereiche neuzeichnen
 
Zitat:

Zitat von Gandalfus
nicht da wo es auf Geschwindigkeit ankommt

Wieso sollte man dann fehleranfälligen Code schreiben? Auch da sollte der Code keine Speicherleaks erzeugen können. Und ob es ohne try-finally deutlich schneller ist, wage ich auch stark zu bezweifeln.

Gandalfus 17. Okt 2006 22:19

Re: nur Bereiche neuzeichnen
 
Das bei dem Code das Bild nicht freiggeben wird ist extrem unwahrscheinlich und rechtfertigt meiner Meinung nach kein try finaly.

Abgesehen davon sollte das Instanzieren des Backpuffers im Konstruktor des Formulars efolgen und nicht in der Methode und der Backpuffer sollte unter private als Feld deklariert werden

Man kann sich transparenz auch selber basteln mit Masken. (siehe google) Ob das Schneller ist oder du einfach die Grenze der GDI erreicht hast müsste man testen. Da du aber keine Bilder zeichnen willst(?) reicht BrushStyle := bsclear.

Du zeichnste doch erst alles auf ein Hintergrundbild und koppierst dann das Hintergrundbild auf die Paintbox oder?

Man kann die Zeichenfläche auch eingrenzen. Ob das was bringt müsste man testen.
Delphi-Quellcode:
Rgn := CreateRectRgn(0,0,width-10,height-10);
SelectClipRgn(fbild.Canvas.Handle,Rgn);
deleteObject(Rgn);

Cöster 18. Okt 2006 14:08

Re: nur Bereiche neuzeichnen
 
Zitat:

Zitat von Gandalfus
Abgesehen davon sollte das Instanzieren des Backpuffers im Konstruktor des Formulars efolgen und nicht in der Methode und der Backpuffer sollte unter private als Feld deklariert werden

Warum?

Zitat:

Zitat von Gandalfus
Da du aber keine Bilder zeichnen willst(?)

Was verstehst du unter "Bildern"? Worauf kann man denn sonst noch zeichnen?

Zitat:

Zitat von Gandalfus
...reicht BrushStyle := bsclear.

eben nicht. Ich hab es zumindest nicht so hingekriegt, dass es was bringt (siehe Code oben). Wenn ihr mir nen Code mit Brush.Style (mit Punkt in der Mitte, oder?) zeigen könntet, wo das funzt, wär ich dankbar.

Zitat:

Zitat von Gandalfus
Du zeichnste doch erst alles auf ein Hintergrundbild und koppierst dann das Hintergrundbild auf die Paintbox oder?

Ne, ich wollte eigentlich nur Bereiche neuzeichnen, nicht das gesamte Bitmap, weil ich hier irgendwo mal gelesen hab, dass das performanter sei. Ich hab im Speicher ein Bitmap von der Größe eines Kreises (aber rechteckig, weil's glaub ich leider nicht anders geht), auf dem ich den Kreis zeichne, bevor ich ihn auf die PaintBox kopiere. Das mach ich so mit allen Kreisen nacheinander. Nur dann kommt es halt zu den Überschneidungen (siehe Anhang Beitrag 1).
Nur bereichsweises Neuzeichnen scheint wohl nur bei rechteckigen Formen auch einen Vorteil zu bringen. Irre ich mich?


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:10 Uhr.
Seite 2 von 2     12   

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