| Zitat von Console32: |
| Wenn ich noch verstehen darf warum, mach ich es gerne anderes. |
Das Vorgehen passt einfach nicht zu dem, was Windows vorsieht:
Controls zeichnen sich (vereinfacht gesagt), wenn sie WM_PAINT erhalten. Dabei sorgt das Betriebssystem dafür, dass diese Nachricht automatisch gesendet wird, wenn z.B. verdeckte Bereiche des Fensters wieder sichtbar werden etc.
Dabei erfolgt das Zeichnen unmittelbar aufgrund der erhaltenen Nachricht und der Bereich, der tatsächlich neugezeichnet wird, wird auf eben diesen nun sichtbaren Bereich beschränkt.
Selbst auslösen kann man das Zeichnen (letztlich durch den Aufruf von
Invalidate) beispielsweise, wenn sich der Inhalt komplett geändert hat.
Dann wird aber der gesamte Bereich des Controls neu gezeichnet.
Probiere mal testweise, den Interval des Timers ein wenig hochzsetzen (um die Effekte besser erkennen zu können), und platziere dein Control z.B. in einem scrollbaren Bereich und scrolle etwas herum.
Oder verschiebe das Fenster aus dem sichtbaren Bereich des Bildschirms heraus und wieder herein und beobachte, was passiert.
Ich bin sicher, die Transparenz sieht nicht so einwandfrei aus, wie sie aussehen könnte, wenn du es "richtig" machen würdest.
Kurzum: Es ist einfach unsauber, das gesamte Control jede halbe Sekunde komplett neu zu zeichnen, obwohl das eigentlich überhaupt nicht nötig ist.