Freigeben über


Zeichnen deckender und halb transparenter Linien

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

Wenn Sie eine halb transparente Linie vor einem Hintergrund zeichnen, wird Linienfarbe mit den Hintergrundfarben gemischt. Die Alphakomponente gibt an, wie die Linien- und Hintergrundfarben gemischt werden. Alphawerte nahe 0 setzen eine größere Gewichtung auf die Hintergrundfarben, und Alphawerte nahe 255 stellen mehr Gewicht auf die Linienfarbe.

Das folgende Beispiel zeichnet ein Bild und zeichnet dann drei Linien, die das Bild als Hintergrund verwenden. Für die erste Linie wird ein Alphaanteil von 255 verwendet. Die Linie ist daher nicht transparent. Die zweite und die dritte Linie verwenden einen Alphaanteil von 128. Sie sind daher halb transparent. Das Hintergrundbild scheint also durch die Linien hindurch. Der Aufruf von Graphics::SetCompositingQuality bewirkt, dass die Mischung für die dritte Zeile in Verbindung mit der Gammakorrektur erfolgt.

Image image(L"Texture1.jpg");
graphics.DrawImage(&image, 10, 5, image.GetWidth(), image.GetHeight());
Pen opaquePen(Color(255, 0, 0, 255), 15);
Pen semiTransPen(Color(128, 0, 0, 255), 15);
graphics.DrawLine(&opaquePen, 0, 20, 100, 20);
graphics.DrawLine(&semiTransPen, 0, 40, 100, 40);
graphics.SetCompositingQuality(CompositingQualityGammaCorrected);
graphics.DrawLine(&semiTransPen, 0, 60, 100, 60);

Die folgende Abbildung zeigt die Ausgabe des vorherigen Codes.

Abbildung eines Bilds, das von drei breiten Linien überlagert ist: eine undurchsichtige, eine leicht transparente und eine sehr transparent