Gewusst wie: Zeichnen mit nicht transparenten und halb transparenten Pinseln

Aktualisiert: November 2007

Wenn Sie eine Form ausfüllen, müssen Sie an eine der Füllmethoden der Graphics-Klasse ein Brush-Objekt übergeben. Der einzige Parameter des SolidBrush-Konstruktors ist ein Color-Objekt. Um eine nicht transparente Form auszufüllen, legen Sie für den Alphaanteil der Farbe den Wert 255 fest, und um eine halb transparente Form auszufüllen, legen Sie für den Alphaanteil einen beliebigen Wert von 1 bis 254 fest.

Wenn Sie eine halb transparente Form ausfüllen, wird die Farbe der Form mit den Hintergrundfarben gemischt. Der Alphaanteil legt das Mischungsverhältnis zwischen Form- und Hintergrundfarben fest; durch Alphawerte gegen 0 werden die Hintergrundfarben und durch Alphawerte gegen 255 die Farbe der Form höher gewichtet.

Beispiel

Im folgenden Beispiel wird erst eine Bitmap gezeichnet, und anschließend werden drei Ellipsen ausgefüllt, die die Bitmap überlappen. Die erste Ellipse basiert auf einem Alphaanteil von 255 und ist daher nicht transparent. Die zweite und dritte Ellipse basieren auf einem Alphaanteil von 128 und sind daher halb transparent; das Hintergrundbild scheint also durch die Ellipsen hindurch. Der Aufruf, durch den die CompositingQuality-Eigenschaft festgelegt wird, sorgt dafür, dass die Mischung für die dritte Ellipse unter Verwendung der Gammakorrektur erfolgt.

In der nachstehenden Abbildung ist das Ergebnis des folgenden Codes dargestellt.

Dim bitmap As New Bitmap("Texture1.jpg")
e.Graphics.DrawImage(bitmap, 50, 50, bitmap.Width, bitmap.Height)

Dim opaqueBrush As New SolidBrush(Color.FromArgb(255, 0, 0, 255))
Dim semiTransBrush As New SolidBrush(Color.FromArgb(128, 0, 0, 255))

e.Graphics.FillEllipse(opaqueBrush, 35, 45, 45, 30)
e.Graphics.FillEllipse(semiTransBrush, 86, 45, 45, 30)

e.Graphics.CompositingQuality = CompositingQuality.GammaCorrected
e.Graphics.FillEllipse(semiTransBrush, 40, 90, 86, 30)

Bitmap bitmap = new Bitmap("Texture1.jpg");
e.Graphics.DrawImage(bitmap, 50, 50, bitmap.Width, bitmap.Height);

SolidBrush opaqueBrush = new SolidBrush(Color.FromArgb(255, 0, 0, 255));
SolidBrush semiTransBrush = new SolidBrush(Color.FromArgb(128, 0, 0, 255));

e.Graphics.FillEllipse(opaqueBrush, 35, 45, 45, 30);
e.Graphics.FillEllipse(semiTransBrush, 86, 45, 45, 30);

e.Graphics.CompositingQuality = CompositingQuality.GammaCorrected;
e.Graphics.FillEllipse(semiTransBrush, 40, 90, 86, 30);

Kompilieren des Codes

Das vorangehende Beispiel ist für die Verwendung mit Windows Forms konzipiert und erfordert PaintEventArgse, einen Parameter von PaintEventHandler.

Siehe auch

Aufgaben

Gewusst wie: Verwenden eines transparenten Hintergrunds für ein Steuerelement

Gewusst wie: Zeichnen deckender und halbtransparenter Linien

Gewusst wie: Erstellen von transparenten Windows Forms

Weitere Ressourcen

Grafik und Zeichnen in Windows Forms

Alphablending von Linien und Füllungen