Share via


Zeichnen mit undurchsichtigen und halbtransparenten Pinsel

Wenn Sie ein Shape ausfüllen, müssen Sie die Adresse eines Brush-Objekts an eine der Fill-Methoden der Graphics-Klasse übergeben. Der einzige 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 die Formen- und Hintergrundfarben gemischt werden. Alphawerte nahe 0 setzen mehr Gewicht auf die Hintergrundfarben, und Alphawerte in der Nähe von 255 stellen mehr Gewicht auf die Formfarbe.

Das folgende Beispiel zeichnet ein Bild und füllt dann drei Auslassungspunkte 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 die Mischung 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 vorherigen Codes.

Abbildung eines Bilds, das von drei Auslassungspunkten überlagert ist: eine undurchsichtig, eine leicht transparent, eine sehr transparent