Nasıl yapılır: Donuk ve Yarı Saydam Çizgiler Çizme

Bir çizgi çizdiğinizde, sınıfının yöntemine bir nesne geçirmeniz gerekir PenDrawLineGraphics . Oluşturucunun parametrelerinden biri Pen bir Color nesnedir. Donuk bir çizgi çizmek için rengin alfa bileşenini 255 olarak ayarlayın. Yarı saydam bir çizgi çizmek için alfa bileşenini 1 ile 254 arasında bir değere ayarlayın.

Arka plan üzerinde yarı saydam bir çizgi çizdiğinizde, çizginin rengi arka planın renkleriyle karıştırkaydedilir. Alfa bileşeni, çizgi ve arka plan renklerinin nasıl karıştırılır olduğunu belirtir; 0 yakınındaki alfa değerleri arka plan renkleriyle daha fazla ağırlığa sahiptir ve 255 yakınındaki alfa değerleri çizgi rengine daha fazla ağırlığa sahiptir.

Örnek

Aşağıdaki örnek bir bit eşlem çizer ve sonra arka plan olarak bit eşlemi kullanan üç satır çizer. İlk satır 255 Alfa bileşenini kullanır, bu nedenle opaktır. İkinci ve üçüncü satırlar 128 alfa bileşenini kullanır, bu nedenle yarı saydam olurlar; arka plan görüntüsünü çizgiler aracılığıyla görebilirsiniz. Özelliği ayarlayan ifade, CompositingQuality üçüncü satıra ilişkin karıştırmasının gama düzeltmesi ile birlikte yapılmasına neden olur.

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)

Aşağıdaki resimde aşağıdaki kodun çıkışı gösterilmektedir:

Illustration that shows opaque and semitransparent output

Kod Derleniyor

yukarıdaki örnek, Windows Forms kullanımı için tasarlanmıştır ve PaintEventArgse olay işleyicisinin bir parametresi olan gerektirir Paint .

Ayrıca bkz.