Autor Beitrag
Co
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 27

WinXP, SUSE Linux 9.0
Delphi 5.0 Standard
BeitragVerfasst: Di 23.08.05 20:11 
Verwende für eine grafische Darstellung eine Paintbox in einem Frame (Align=Client) und Scrollbalken.

Das Problem: selbst die Grafik sehr schnell gezeichnet wird (ca. 1s/20) ist beim Scrollen ein Flimmern mit der Hintergrundfarbe des Frames deutlich sichtbar. Der Grund dafür ist wahrscheinlich dass bevor OnPaint für die Paintbox generiert wird zunächst der Frame gezeichnet wird (=> Fillrect mit Framefarbe überschreibt den vorherigen Paintboxinhalt bevor die Paintbox neugezeichnet wird).

Hat einer ne Idee wie man das abschalten kann? Das Zeichnen des Frames ist absolut nicht erwünscht, aber der Frame hat kein eigenes OnPaint Ereignis (hab auch schon erfolglos versucht windowproc zu überschreiben).
Amateur
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 777

(Win98, WinMe) WinXP Prof
D3 Prof, D6 Pers, D2k5 Pers., Turbo C++ Explorer
BeitragVerfasst: Di 23.08.05 20:15 
bin noch anfänger deswegen fällt mir da nur ein form1.doublebuffered auf true setzen im oncreate...
ansonsten hab ich keine ahnung..
probiers aus wenn du das noch net gemacht hast..
delfiphan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: Di 23.08.05 22:44 
Da gibt es im wesentlichen 2 verschiedene Möglichkeiten:

1. Du machst das Formular opak:
ControlStyle := ControlStyle + [csOpaque];

2. Du fängst die Message WM_ERASEBKGND ab und verhinderst, dass der Hintergrund gezeichnet wird. Nur gilt das dann aber fürs gesamte Formular und die daraufliegenden Controls. Die haben dann evtl. keinen definierten Hintergrund mehr. Du könntest dir alternativ ein TPanelOhneHintergrund oder sowas definieren, welches die WM_ERASEBKGND-Message abfängt und ein Zeichnen des Hintergrundes verhindert. Dann wäre die Änderung nicht Form-weit sondern würde nur für das TPanelOhneHintergrund und die darauf liegenden Controls gelten.

DoubleBuffer gibt's bei der PaintBox nicht. Das ist auch nicht das Problem.
Co Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 27

WinXP, SUSE Linux 9.0
Delphi 5.0 Standard
BeitragVerfasst: Mi 24.08.05 20:32 
OK vielen Dank erstmal.

Die Sache mit doublebuffered funktioniert schonmal, aber das Zeichnen wird dadurch (vermute ich mal obwohl ich nicht wirklich einen unterschied gemerkt hab) langsamer weil das Bild ja noch zurückkopiert werden muss.

Werd jetzt deshalb noch mal die Sache mit csopaque probieren