Zeichnen mit nicht transparenten und halbtransparenten Pinseln

Wenn Sie eine Form ausfüllen, müssen Sie die Adresse eines Brush-Objekts an eine der Füllmethoden der Graphics-Klasse übergeben. Der eine Parameter des SolidBrush-Konstruktors ist ein Color-Objekt. Um eine nicht transparente Form auszufüllen, legen Sie den Alphaanteil der Farbe auf 255 fest. Um eine halb transparente Form auszufüllen, legen Sie den Alphaanteil auf 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. Die Alphakomponente gibt an, wie form- und hintergrundfarben gemischt werden. Alphawerte nahe 0 legen mehr Gewichtung auf die Hintergrundfarben, und Alphawerte nahe 255 wägen die Formfarbe stärker ab.

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

Image image(L"Texture1.jpg");
graphics.DrawImage(&image, 50, 50, image.GetWidth(), image.GetHeight());
SolidBrush opaqueBrush(Color(255, 0, 0, 255));
SolidBrush semiTransBrush(Color(128, 0, 0, 255));
graphics.FillEllipse(&opaqueBrush, 35, 45, 45, 30);
graphics.FillEllipse(&semiTransBrush, 86, 45, 45, 30);
graphics.SetCompositingQuality(CompositingQualityGammaCorrected);
graphics.FillEllipse(&semiTransBrush, 40, 90, 86, 30);

Die folgende Abbildung zeigt die Ausgabe des vorangehenden Codes.

Abbildung, die ein Bild zeigt, das von drei Ausellipsen überlagert ist: eine nicht transparent, eine etwas transparent, eine sehr transparent