Hoe: Ondoorzichtige en semitransparante lijnen tekenen
Wanneer u een lijn tekent, moet u een Pen object doorgeven aan de DrawLine methode van de Graphics-klasse. Een van de parameters van de Pen constructor is een Color object. Als u een ondoorzichtige lijn wilt tekenen, stelt u het alfa-onderdeel van de kleur in op 255. Als u een semitransparante lijn wilt tekenen, stelt u het alfaonderdeel in op een willekeurige waarde van 1 tot en met 254.
Wanneer u een semitransparante lijn over een achtergrond tekent, wordt de kleur van de lijn gecombineerd met de kleuren van de achtergrond. Het alfa-onderdeel geeft aan hoe de lijn- 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 lijnkleur.
Voorbeeld
In het volgende voorbeeld tekent u een bitmap en tekent u vervolgens drie regels die de bitmap als achtergrond gebruiken. De eerste regel maakt gebruik van een alfa-component van 255, dus het is ondoorzichtig. De tweede en derde regel gebruiken een alfa-component van 128, dus ze zijn semitransparant; u kunt de achtergrondafbeelding zien door de lijnen. De instructie waarmee de eigenschap CompositingQuality wordt ingesteld, zorgt ervoor dat de blending voor de derde regel wordt uitgevoerd in combinatie met gammacorrectie.
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)
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 de Paint gebeurtenis-handler.
Zie ook
.NET Desktop feedback