方法 : イメージ テクスチャによって図形を塗りつぶす
更新 : 2007 年 11 月
Image クラスおよび TextureBrush クラスを使用することによって、閉じている図形をテクスチャで塗りつぶすことができます。
使用例
楕円をイメージで塗りつぶす例を次に示します。このコードは、Image オブジェクトを作成し、その Image オブジェクトのアドレスを TextureBrush コンストラクタに引数として渡します。3 番目のステートメントでそのイメージを縮小し、4 番目のステートメントでは、縮小したイメージのコピーを繰り返したパターンによって楕円を塗りつぶしています。
次のコードでは、Transform プロパティに、イメージが描画される前にそのイメージに適用される変換方法が指定されています。元のイメージの幅が 640 ピクセルで、高さが 480 ピクセルであることを前提とします。この変換では、水平方向と垂直方向のスケーリング値を設定することによって、イメージを 75 × 75 に縮小します。
メモ : |
---|
次の例では、イメージのサイズが 75 × 75 で、楕円のサイズが 150 × 250 です。イメージの方が、そのイメージで塗りつぶす対象の楕円よりも小さいため、イメージを並べたパターンによって楕円が表示されます。イメージを並べるとは、塗りつぶし対象の図形の境界に達するまで、イメージを水平方向と垂直方向に繰り返して表示することを意味します。イメージを並べて表示する方法の詳細については、「方法 : イメージを並べたパターンによって図形を塗りつぶす」を参照してください。 |
Dim image As New Bitmap("ImageFile.jpg")
Dim tBrush As New TextureBrush(image)
tBrush.Transform = New Matrix( _
75.0F / 640.0F, _
0.0F, _
0.0F, _
75.0F / 480.0F, _
0.0F, _
0.0F)
e.Graphics.FillEllipse(tBrush, New Rectangle(0, 150, 150, 250))
Image image = new Bitmap("ImageFile.jpg");
TextureBrush tBrush = new TextureBrush(image);
tBrush.Transform = new Matrix(
75.0f / 640.0f,
0.0f,
0.0f,
75.0f / 480.0f,
0.0f,
0.0f);
e.Graphics.FillEllipse(tBrush, new Rectangle(0, 150, 150, 250));
コードのコンパイル方法
前述の例は Windows フォームと一緒に使用することが想定されていて、Paint イベント ハンドラのパラメータである PaintEventArgs e が必要です。