Gewusst wie: Zeichnen deckender und halbtransparenter Linien

Wenn Sie eine Linie zeichnen, müssen Sie ein Pen-Objekt an die DrawLine-Methode der Graphics-Klasse übergeben. Der einzige Parameter des Pen-Konstruktors ist ein Color-Objekt. Um eine nicht transparente Linie zu zeichnen, legen Sie für den Alphaanteil der Farbe den Wert 255 fest. um eine halb transparente Linie zu zeichnen, legen Sie für den Alphaanteil einen beliebigen Wert von 1 bis 254 fest.

Wenn Sie eine halb transparente Linie vor einem Hintergrund zeichnen, wird die Linienfarbe mit den Hintergrundfarben gemischt. Die Alphakomponente legt das Mischungsverhältnis zwischen Linien- und Hintergrundfarben fest. Durch Alphawerte gegen 0 werden die Hintergrundfarben höher gewichtet und durch Alphawerte gegen 255 die Linienfarbe.

Beispiel

Im folgenden Beispiel werden erst eine Bitmap und anschließend drei Linien gezeichnet, die die Bitmap als Hintergrund verwenden. Die erste Linie verwendet einen Alphaanteil von 255 und ist daher nicht transparent. Die zweite und dritte Linie verwenden einen Alphaanteil von 128 und sind daher halb transparent; das Hintergrundbild scheint also durch die Linien hindurch. Die Anweisung, durch die die CompositingQuality-Eigenschaft festgelegt wird, bewirkt, dass bei der Mischung für die dritte Linie eine Gammakorrektur angewendet wird.

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

Deckend und halb transparent

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

        Dim opaquePen As New Pen(Color.FromArgb(255, 0, 0, 255), 15)
        Dim semiTransPen As New Pen(Color.FromArgb(128, 0, 0, 255), 15)

        e.Graphics.DrawLine(opaquePen, 0, 20, 100, 20)
        e.Graphics.DrawLine(semiTransPen, 0, 40, 100, 40)

        e.Graphics.CompositingQuality = CompositingQuality.GammaCorrected
        e.Graphics.DrawLine(semiTransPen, 0, 60, 100, 60)

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

Pen opaquePen = new Pen(Color.FromArgb(255, 0, 0, 255), 15);
Pen semiTransPen = new Pen(Color.FromArgb(128, 0, 0, 255), 15);

e.Graphics.DrawLine(opaquePen, 0, 20, 100, 20);
e.Graphics.DrawLine(semiTransPen, 0, 40, 100, 40);

e.Graphics.CompositingQuality = CompositingQuality.GammaCorrected;
e.Graphics.DrawLine(semiTransPen, 0, 60, 100, 60);

Kompilieren des Codes

Das vorhergehende Beispiel ist für die Verwendung mit Windows Forms konzipiert und erfordert PaintEventArgs e, einen Parameter des Paint-Ereignishandlers.

Siehe auch

Aufgaben

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

Gewusst wie: Erstellen von transparenten Windows Forms

Gewusst wie: Zeichnen mit nicht transparenten und halb transparenten Pinseln

Weitere Ressourcen

Alphablending von Linien und Füllungen