Re: Controls selbst zeichnen: Erfahrungen?
- From: "Hubert Seidel" <nospam@xxxxxxxxxxxxxxxx>
- Date: Sat, 20 Sep 2008 14:35:27 +0200
Hallo Christian,
"Christian Gudrian" <Christian.Gudrian@xxxxxx> schrieb im Newsbeitrag news:48d3ffad$1@xxxxxxxxxxxxxxxxxxx
Hubert Seidel wrote:
Ich weis jetzt nicht ob GDI+ das kann, aber wenn, dann wird
es bestimmt auch viel Speicher u.s.w. schlucken da ja der
Hintergrund für ein Alpha-Blending irgendwo zwischen
gespeichert sein muss.
Das Display misst 800x480 Pixel. Das macht bei 32 Bits pro Pixel 1.5
MB. Für den ganzen Bildschirm. Das sollte sich gerade noch machen lassen.
Bei 25 Frames/Sekunde sind das bereits 36MB/Sekunde.
Und dann muss natürlich noch das Alpha-Blending berechnet werden.
Zuzüglich 36Mio Subtraktionen, Multiplikation, Schieben und Addition:
CQ= C1+ ((C2-C1)*Alpha) shr 8; // pro Farbkanal bei Alpha 0 bis 255
Im Detail kommen ja noch ein par Lese- Schreibzugriffa dazu.
Gibt es für das Ein- Ausblenden evtl. eine fertige schnelle Funktion
(welche ggf. mit allen Win32-Systemen funktionieren [bzw. >= WinMe])?
Weniger Frames/Sekunde verursachen jedenfalls mehr ruckeln...
Je nach Layout ist es ja nicht unbedingt nötig das
komplette Bild immer und immer wieder neu zu zeichnen.
Je nach Fläche kann das ggf.
auch ungleichmäßig ein- oder ausblenden da der Timer
ja so präzise auch nicht ist. Evtl. sollte die Zeit
mit berücksichtigt werden damit ausgelassene "Frames"
das Gesamtbild nicht stört.
Das sind schon Detailfragen. Ich würde das auch nicht mit einem Timer
Naja... einige Details bestimmen wie es gemacht werden kann/soll/muss...
machen, sondern in einem separaten Thread laufen lassen, der über einen
genauen Timer (PerformanceCounter) die Zeit seit dem letzten Aufruf
misst und dafür sorgt, dass das Blending mit konstanter Geschwindigkeit
abläuft.
Ich glaube GetTickCount reicht völlig.
Ist der Hintergrund des Buttons denn eine Grafik, oder eine Fläche?Das sollte egal sein. Ich will mich beim Pinseln des Buttons nicht
darum kümmern müssen, was sich dahinter befindet.
Wenn es _gut_ aussehen soll, dann sollte man sich darum kümmern ;-)
Sollen denn mehrere Buttons sich unabhängig vonwinander ändern?Sicher.
Was soll denn wann genau das Ein- und Ausblenden steuern?
Wie dynamisch ist das Layout?
Ich tendiere pauschal zu einer Lösung bei
der es zwei Hintergrund-Bitmaps gibt:
Eines enthällt das komplette Layout mit eingeblendeten
Controls, das zweite mit ausgeblendeten.
Die beiden Bitmaps werden bei Create/Resize aktualisiert
und im Paint-Ereignis die einzelnen Controls mit
jew. Alpha gezeichnet. Sofern das Ein- Ausblenden
schnell erfolgen darf (z.b. nur 10 Frames mit 25fps)
Dann würde ich ggf. auf so etwas wie Threads verzichten
und den Effekt direkt zeichnen. Pro Control währen das
dann ca. 1/25*10=0,4 Sekunden.
Beim Ein- Ausblenden würden dann eben nur die Flächen
der jew. zu aktualisierenden Controls gezeichnen.
mfg.
Herby
--
http://www.hubert-seidel.de
.
- Follow-Ups:
- Re: Controls selbst zeichnen: Erfahrungen?
- From: Christian Gudrian
- Re: Controls selbst zeichnen: Erfahrungen?
- References:
- Controls selbst zeichnen: Erfahrungen?
- From: Christian Gudrian
- Re: Controls selbst zeichnen: Erfahrungen?
- From: Marian Aldenhövel
- Re: Controls selbst zeichnen: Erfahrungen?
- From: Christian Gudrian
- Re: Controls selbst zeichnen: Erfahrungen?
- From: Hubert Seidel
- Re: Controls selbst zeichnen: Erfahrungen?
- From: Christian Gudrian
- Controls selbst zeichnen: Erfahrungen?
- Prev by Date: Re: TreeView: Magie des doppelten Knotens
- Next by Date: Re: Controls selbst zeichnen: Erfahrungen?
- Previous by thread: Re: Controls selbst zeichnen: Erfahrungen?
- Next by thread: Re: Controls selbst zeichnen: Erfahrungen?
- Index(es):
Loading