次の方法で共有


方法 : 不透明な直線および半透明な直線を描画する

更新 : 2007 年 11 月

直線を描画する場合は、Graphics クラスの DrawLine メソッドに Pen オブジェクトを渡す必要があります。Pen コンストラクタには、パラメータの 1 つとして Color オブジェクトを渡します。不透明な直線を描画するには、色のアルファ要素を 255 に設定します。半透明な直線を描画するには、色のアルファ要素を 1 から 254 までの任意の値に設定します。

半透明な直線を背景の上に描画する場合は、その直線の色が背景色とブレンドされます。アルファ要素は、直線の色と背景色をどのように混合するかを指定します。0 に近いアルファ値では背景色の度合いが強くなり、255 に近いアルファ値では直線の色の度合いが強くなります。

使用例

ビットマップを描画した後で、そのビットマップを背景として 3 本の直線を描画する例を次に示します。最初の直線のアルファ要素の値は 255 です。したがって、その直線は不透明です。2 番目と 3 番目の線のアルファ要素の値は 128 であるため、これら 2 本の直線は半透明になり、直線をとおしてその下にある背景イメージを見ることができます。CompositingQuality プロパティを設定するステートメントによって、3 番目の直線のブレンドがガンマ補正と組み合わせて行われるようになります。

次のコードによる出力を次の図に示します。

不透明と半透明

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)

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);

コードのコンパイル方法

前述の例は Windows フォームと一緒に使用することが想定されていて、Paint イベント ハンドラのパラメータである PaintEventArgse が必要です。

参照

処理手順

方法 : コントロールに透明な背景を指定する

方法 : 透過的な Windows フォームを作成する

方法 : 不透明ブラシおよび半透明ブラシを使用して描画する

その他の技術情報

アルファ ブレンドの直線と塗りつぶし