テクスチャブラシ


イメージで塗りつぶす

以前紹介したブラシの他に、複雑な模様を面に描画したい時に
Image オブジェクトをブラシとして使うことができる、テクスチャブラシと言うものがあります
テクスチャブラシは、System.Drawing.TextureBrush クラスで表されます
Object
   MarshalByRefObject
      Brush
         TextureBrush

public sealed class TextureBrush : Brush
このクラスを利用することによって、面に特定のテクスチャを描画できます
コンストラクタは以下のものが定義されています
public TextureBrush(Image bitmap);
public TextureBrush(Image image , Rectangle dstRect);
public TextureBrush(Image image , RectangleF dstRect);
public TextureBrush(Image image , WrapMode wrapMode);

public TextureBrush(
	Image image , Rectangle dstRect ,
	ImageAttributes imageAttr
);
public TextureBrush(
	Image image , RectangleF dstRect ,
	ImageAttributes imageAttr
);
public TextureBrush(
	Image image ,
	WrapMode wrapMode , Rectangle dstRect
);
public TextureBrush(
	Image image ,
	WrapMode wrapMode , RectangleF dstRect
);
bitmap はテクスチャに使うイメージを表す Image オブジェクトを指定します
dstRect はイメージうち、テクスチャに用いる長方形を指定します
これを指定すれば、イメージから指定した部分だけがブラシに適応されます

imageAttr はガンマなどの属性をあらわす ImageAttributes オブジェクトを
wrapMode は、ブラシで塗りつぶす面がイメージよりも大きい時
どのようなパターンで塗りつぶすかを指定します
wrapMode は System.Drawing.Drawing2D.WrapMode列挙型です

public enum WrapMode

この列挙型には、次のような意味のメンバが定義されています

メンバ解説
Clamp 対象境界にイメージを固定する
Tile イメージを繰り返し貼りつける
TileFlipX 水平に反転したイメージと、通常のイメージを繰り返し貼りつける
TileFlipXY 水平、垂直に反転したイメージと、通常のイメージを繰り返し貼りつける
TileFlipY 垂直に反転したイメージと、通常のイメージを繰り返し貼りつける

WrapMode 列挙型は、TextureBrush.WrapMode プロパティでも設定できます

public WrapMode WrapMode {get; set;}

必要に応じて、イメージの貼り方を変更してください
using System.Windows.Forms;
using System.Drawing;
using System.Drawing.Drawing2D;

class WinMain : Form {
	public static void Main(string[] args) {		
		Application.Run(new WinMain());
	}
				
	override protected void OnPaint(PaintEventArgs e) {
		Graphics g = e.Graphics;
		Image img = new Bitmap("test.jpg");
		Rectangle rect = new Rectangle(100 , 100 , 100 , 50);
		Brush myBrush = new TextureBrush(img , WrapMode.TileFlipXY , rect);
		g.FillRectangle(myBrush , 0 , 0 , 400 , 200);
	}
}


この部分では、イメージの特定の長方形のみをブラシに用いています
さらに、WrapMode.TileFlipXY でイメージの長方形より大きな範囲を塗りつぶす場合
横には水平に反転したイメージ、縦には垂直に反転したイメージを繰り返し使います



前のページへ戻る次のページへ