AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi nur Bereiche neuzeichnen
Thema durchsuchen
Ansicht
Themen-Optionen

nur Bereiche neuzeichnen

Ein Thema von Cöster · begonnen am 16. Okt 2006 · letzter Beitrag vom 18. Okt 2006
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#11

Re: nur Bereiche neuzeichnen

  Alt 17. Okt 2006, 23:03
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.
  Mit Zitat antworten Zitat
Gandalfus

Registriert seit: 19. Apr 2003
407 Beiträge
 
Delphi 2006 Professional
 
#12

Re: nur Bereiche neuzeichnen

  Alt 17. Okt 2006, 23:19
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);
Besucht doch mal meine Homepage
  Mit Zitat antworten Zitat
Cöster

Registriert seit: 6. Jun 2006
589 Beiträge
 
Turbo Delphi für Win32
 
#13

Re: nur Bereiche neuzeichnen

  Alt 18. Okt 2006, 15:08
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 von Gandalfus:
Da du aber keine Bilder zeichnen willst(?)
Was verstehst du unter "Bildern"? Worauf kann man denn sonst noch zeichnen?

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 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?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:40 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