Freigeben über


Anleitung: Undurchsichtige und halbtransparente Linien zeichnen

Wenn Sie eine Linie zeichnen, müssen Sie ein Pen Objekt an die DrawLine Methode der Graphics Klasse übergeben. Einer der Parameter des Pen Konstruktors ist ein Color Objekt. Um eine undurchsichtige Linie zu zeichnen, legen Sie die Alphakomponente der Farbe auf 255 fest. Um eine halbtransparente Linie zu zeichnen, legen Sie die Alphakomponente auf einen beliebigen Wert zwischen 1 und 254 fest.

Wenn Sie eine halbtransparente Linie über einen Hintergrund zeichnen, wird die Farbe der Linie mit den Farben des Hintergrunds gemischt. Die Alphakomponente gibt an, wie die Linien- und Hintergrundfarben gemischt werden. Alphawerte in der Nähe von 0 platzieren mehr Gewicht auf den Hintergrundfarben, und Alphawerte in der Nähe von 255 setzen mehr Gewicht auf die Linienfarbe.

Beispiel

Das folgende Beispiel zeichnet eine Bitmap und zeichnet dann drei Linien, die die Bitmap als Hintergrund verwenden. Die erste Zeile verwendet eine Alphakomponente von 255, sodass sie undurchsichtig ist. Die zweite und dritte Zeile verwenden eine Alphakomponente von 128, sodass sie halbtransparent sind; Sie können das Hintergrundbild durch die Linien sehen. Die Anweisung, die die CompositingQuality Eigenschaft festlegt, bewirkt, dass die Überblendung für die dritte Zeile in Verbindung mit der Gammakorrektur stattfindet.

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);
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)

Die folgende Abbildung zeigt die Ausgabe des folgenden Programmcodes:

Abbildung, die opake und halbtransparente Ausgabe zeigt

Code kompilieren

Das vorangehende Beispiel wurde für die Verwendung mit Windows Forms entwickelt und erfordert PaintEventArgse, bei dem es sich um einen Parameter des Paint-Ereignishandlers handelt.

Siehe auch