Hallo zusammen,
ich zeichne in meinem Programm Rechtecke, gefüllt mit einer halbtransparenten Farbe.
Der Alphawert der Farbe wird innerhalb eines Timer-EventHandlers stetig erhöht, so das das neu gezeichnete Rechteck wieder etwas dunkler erscheint, als das zuvor gezeichnete.
Und genau da fängt das Problem schon an. Denn ich zeichne jedes mal ein neues Rechteck.
Gezeichnet wird mittels:
SolidBrush mySolidBrush = New SolidBrush(Color.FromArgb(tempAlpha, Color.Black));
e.Graphics.FillRectangle(mySolidBrush, myRect);
im Paint-Eventhandler eines Controls.
Da jedes mal ein neues Rechteck über das alte gezeichnet wird, addiert sich die Darstellung der einzelnen Rechtecke. Ich möchte aber eigentlich immer nur ein Rechteck mit dem aktuellen Alphakanal-Wert zeichnen.
Jedes mal erst das Control neu zeichnen zu lassen, damit das alte Rechteck quasi verschwindet würde wohl zu einem Flackern führen. Kann man nicht irgendwie eine Art Referenz auf so ein Rechteck halten? Mittels GDI+ wird das wohl nicht gehen oder was meint ihr?
MfG
wax
Hallo,
wenn sie sich addieren, kannst du dann nicht einfach nur die Differenz zeichnen die noch fehlt um deinen Wert zu erreichen.
AlphaIst //die Summe aller Alpha werte bisher
AlphaSoll //dein Sollwert
SolidBrush mySolidBrush = New SolidBrush(Color.FromArgb(AlphaSoll-AlphaIst, Color.Black));
fz
"We better hurry up and start coding, there are going to be a lot of bugs to fix."
Merk dir die Ausgangsbilder in einem eigenen Bild, dann kannst du darauf immer frisch ein Rechteck mit aktueller Transparenz zeichnen.
Im OnPaint reichts dann wenn du die gespeicherten Ergebnisse zeichnest.