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

更新 : 2007 年 11 月

図形を塗りつぶす場合は、Brush オブジェクトを Graphics クラスの塗りつぶしメソッドのいずれかに渡す必要があります。SolidBrush コンストラクタには、パラメータの 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, 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)

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

コードのコンパイル方法

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

参照

処理手順

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

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

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

その他の技術情報

Windows フォームにおけるグラフィックスと描画

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