AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte VCL Flicker Reduce Unit

VCL Flicker Reduce Unit

Ein Thema von jbg · begonnen am 1. Okt 2006 · letzter Beitrag vom 19. Okt 2010
Antwort Antwort
Seite 1 von 3  1 23   
jbg
Registriert seit: 12. Jun 2002
Wer schon mal auf ein TabSheet, dass Anchors oder Align=alClient hat, Controls gelegt hat, wird sicherlich nicht so begeistert von dem Geflacker sein, dass beim Vergrößern/Verkleinern des Formulars dabei ensteht. Da dieses Geflacker teilweise zu einer immensen Verlangsamung des Resize-Vorgangs kommt und auch nicht gerade schön anzusehen ist, bin ich auf Ursachenforschung gegangen. Und dabei musste ich festetellen, dass Borland beim WM_ERASEBKGND für alle TWinControls den kompletten Inhalt übermalt, also auch den von Child-Controls, die csOpaque im ControlStyle haben.

Damit dieses Geflackere aufhört habe ich nun eine kleine Unit geschrieben, die durch ihre bloses Aufnahme in ein Projekt, das Flackern stark reduziert.

Hier mal ein Screen-Recording (1.3MB), dass den Unterschied zeigt.


Zitat:
History:
2006-11-21:
- fixed region bugs
- fixed wrong DefaultHandler call
- fixed parent background painting
- added region exclusion for sub-controls of transparent control children
2006-10-03:
- fixed RangeChecks disabled
Angehängte Dateien
Dateityp: zip vclflickerreduce_147.zip (3,7 KB, 367x aufgerufen)
 
Benutzerbild von toms
toms

 
Delphi XE Professional
 
#2
  Alt 1. Okt 2006, 14:37
Hallo jbg,

Habe deine Unit kurz in einem aktuellen Projekt ausprobiert.

Folgende Probleme sind aufgetreten:

Der VirtualStringTree wird z.T nicht mehr richtig gezeichnet. (nur schwarzer Hintergrund)
Der EmbeddedWB wird dauern Range Check Errors hervor.

Ansonsten sieht's aber vielbersprechend aus!
Thomas
  Mit Zitat antworten Zitat
jbg

 
Delphi 10.1 Berlin Professional
 
#3
  Alt 1. Okt 2006, 14:46
Zitat von toms:
Der VirtualStringTree wird z.T nicht mehr richtig gezeichnet. (nur schwarzer Hintergrund)
Kann ich nicht reproduzieren. Vor allem ändert sich für den VT eigentlich gar nichts (solange er keine Child-Controls hat).

Zitat:
Der EmbeddedWB wird dauern Range Check Errors hervor.
Der wirft noch ganz andere Sachen. Was ich mich mit dem IE schon beruflich geärgert habe. Und der IE 7 lässt noch schlimmeres erwarten.
Andreas aka AHUser aka jbg
  Mit Zitat antworten Zitat
jbg

 
Delphi 10.1 Berlin Professional
 
#4
  Alt 1. Okt 2006, 15:09
Zitat von toms:
Der EmbeddedWB wird dauern Range Check Errors hervor.
Auch das kann ich nicht nachvollziehen.

VT 4.4.3
EWB 14.57
Andreas aka AHUser aka jbg
  Mit Zitat antworten Zitat
jbg

 
Delphi 10.1 Berlin Professional
 
#5
  Alt 3. Okt 2006, 19:19
Zitat von toms:
Folgende Probleme sind aufgetreten:

Der VirtualStringTree wird z.T nicht mehr richtig gezeichnet. (nur schwarzer Hintergrund)
Der EmbeddedWB wird dauern Range Check Errors hervor.
Das kommt, wenn der Ersteller der Unit (ich) mit den Vorgabewerten für die Breichsüberprüfung und Überlaufprüfung arbeitet, aber die Benutzer dies nicht machen.

Ich habe jetzt zum einen die Übergabe von Cardinals an Integer Parameter mit einem Typecast behoben und zum anderen für die Unit die Bereichs- und Überlaufprüfung abgeschaltet. Einfach nochmal herunterladen (ggf. Browsercache leeren).
Andreas aka AHUser aka jbg
  Mit Zitat antworten Zitat
jbg

 
Delphi 10.1 Berlin Professional
 
#6
  Alt 21. Nov 2006, 20:31
Es gibt eine neue, überarbeitete Version der VCLFlickerReduce Unit.

Zitat:
Änderungen:
2006-11-21:
- fixed region bugs
- fixed wrong DefaultHandler call
- fixed parent background painting
- added region exclusion for sub-controls of transparent control children
2006-10-03:
- fixed RangeChecks disabled

Ich gebe keine Garantie, dass die Unit zu 100% funktioniert, da es immer einen Fall geben kann in dem eine abgeleitete Klasse mit WM_ERASEBKGND herumtrickst.
Andreas aka AHUser aka jbg
  Mit Zitat antworten Zitat
xaromz

 
Delphi 2006 Enterprise
 
#7
  Alt 21. Nov 2006, 21:19
Hallo,

mal eine Frage: tritt das Flackern unter Vista immer noch auf? Da wird schließlich jedes Fenster erst mal in ein Offscreen-Bitmap gemalt. Die Performance sollte dadurch aber nicht unbedingt besser werden...

Gruß
xaromz
  Mit Zitat antworten Zitat
jbg

 
Delphi 10.1 Berlin Professional
 
#8
  Alt 21. Nov 2006, 22:14
Zitat von xaromz:
Mal eine Frage: tritt das Flackern unter Vista immer noch auf?
Das kann ich im Moment nicht testen, da mir letztes Wochenende die Graka abgeraucht ist und ich noch nicht dazu gekommen bin, mir eine gescheite neue zu kaufen. Und mit der, die ich im Augenblick drinnen habe, kann ich gerade mal Spiele anno 1999 spielen. Also vollkommen ungeeignet für Vista (da sieht nun alles dunkelgrau aus. So müssen sich wohl dann die Illegal-Vista-Kopierer fühlen).

Die Unit verringert das flackern hauptsächlich dadurch, dass nicht mehrmals auf der selben Stelle mit unterschiedlichen Farbwerten/Hintergrund-Themes gemalt wird. Das beschleunigt das ganze natürlich ein Stück, was Vista auch zugute kommen sollte.
Andreas aka AHUser aka jbg
  Mit Zitat antworten Zitat
Gandalfus

 
Delphi 2006 Professional
 
#9
  Alt 22. Nov 2006, 11:33
Zitat von xaromz:
Hallo,

mal eine Frage: tritt das Flackern unter Vista immer noch auf? Da wird schließlich jedes Fenster erst mal in ein Offscreen-Bitmap gemalt. Die Performance sollte dadurch aber nicht unbedingt besser werden...

Gruß
xaromz
Ich würde sagen, dass dadurch die Performance sogar besser wird.
  Mit Zitat antworten Zitat
Dash
 
#10
  Alt 4. Jan 2007, 19:10
Also bei mir macht die Unit auch einige Probleme. In meiner ListView werden einige Einträge einfach schwarz wenn ich das Fenster maximiere! Ansonsten habe ich eigentlich nichts auszusetzen, klasse Unit
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf