Procedure: Tekenen met ondoorzichtige en semitransparante borstels
Wanneer u een shape opvult, moet u een Brush object doorgeven aan een van de opvulmethoden van de klasse Graphics. De ene parameter van de SolidBrush constructor is een Color-object. Als u een ondoorzichtige vorm wilt vullen, stelt u het alfa-onderdeel van de kleur in op 255. Als u een semitransparante vorm wilt vullen, stelt u het alfaonderdeel in op een willekeurige waarde van 1 tot en met 254.
Wanneer u een semitransparante vorm opvult, wordt de kleur van de vorm gecombineerd met de kleuren van de achtergrond. Het alfaonderdeel geeft aan hoe de vorm- en achtergrondkleuren worden gemengd; alfawaarden in de buurt van 0 plaatsen meer gewicht op de achtergrondkleuren en alfawaarden in de buurt van 255 plaatsen meer gewicht op de vormkleur.
Voorbeeld
In het volgende voorbeeld tekent u een bitmap en vult u vervolgens drie ellipsen in die de bitmap overlappen. De eerste ellips heeft een alfa-component van 255, dus het is niet doorschijnend. Het tweede en derde beletselteken gebruiken een alfa-component van 128, dus ze zijn semitransparent; u kunt de achtergrondafbeelding zien via het beletselteken. De aanroep die de CompositingQuality-eigenschap instelt, zorgt ervoor dat de blending voor de derde ellips wordt uitgevoerd met gammacorrectie.
Bitmap bitmap = new Bitmap("Texture1.jpg");
e.Graphics.DrawImage(bitmap, 50, 50, bitmap.Width, bitmap.Height);
SolidBrush opaqueBrush = new SolidBrush(Color.FromArgb(255, 0, 0, 255));
SolidBrush semiTransBrush = new SolidBrush(Color.FromArgb(128, 0, 0, 255));
e.Graphics.FillEllipse(opaqueBrush, 35, 45, 45, 30);
e.Graphics.FillEllipse(semiTransBrush, 86, 45, 45, 30);
e.Graphics.CompositingQuality = CompositingQuality.GammaCorrected;
e.Graphics.FillEllipse(semiTransBrush, 40, 90, 86, 30);
Dim bitmap As New Bitmap("Texture1.jpg")
e.Graphics.DrawImage(bitmap, 50, 50, bitmap.Width, bitmap.Height)
Dim opaqueBrush As New SolidBrush(Color.FromArgb(255, 0, 0, 255))
Dim semiTransBrush As New SolidBrush(Color.FromArgb(128, 0, 0, 255))
e.Graphics.FillEllipse(opaqueBrush, 35, 45, 45, 30)
e.Graphics.FillEllipse(semiTransBrush, 86, 45, 45, 30)
e.Graphics.CompositingQuality = CompositingQuality.GammaCorrected
e.Graphics.FillEllipse(semiTransBrush, 40, 90, 86, 30)
In de volgende afbeelding ziet u de uitvoer van de volgende code:
De code compileren
Het voorgaande voorbeeld is ontworpen voor gebruik met Windows Forms en vereist PaintEventArgse
, een parameter van PaintEventHandler.
Zie ook
.NET Desktop feedback