次の方法で共有


方法: TileBrush のタイル サイズを設定する

この例では、 TileBrushのタイル サイズを設定する方法を示します。 既定では、TileBrush は、塗りつぶしたい領域を全面を覆う 1 つのタイルを生成します。 この動作をオーバーライドするには、 Viewport プロパティと ViewportUnits プロパティを設定します。

Viewport プロパティは、TileBrushのタイル サイズを指定します。 既定では、 Viewport プロパティの値は、塗りつぶされる領域のサイズを基準とします。 Viewport プロパティに絶対タイル サイズを指定するには、ViewportUnits プロパティを Absolute に設定します。

次の例では、 ImageBrush ( TileBrushの一種) を使用して、タイルで四角形を描画します。 この例では、各タイルを出力領域 (四角形) の 50% x 50% に設定します。 その結果、四角形は画像の 4 つのプロジェクションで描画されます。

次の図は、この例で生成される出力を示しています。

イメージブラシを用いてタイル状に四つのチェリーをデモンストレーションする四角形。


//
// Create an ImageBrush and set the size of each
// tile to 50% by 50% of the area being painted.
//
ImageBrush relativeTileSizeImageBrush = new ImageBrush();
relativeTileSizeImageBrush.ImageSource =
    new BitmapImage(new Uri(@"sampleImages\cherries_larger.jpg", UriKind.Relative));
relativeTileSizeImageBrush.TileMode = TileMode.Tile;

// Specify the size of the base tile.
// By default, the size of the Viewport is
// relative to the area being painted,
// so a value of 0.5 indicates 50% of the output
// area.
relativeTileSizeImageBrush.Viewport = new Rect(0, 0, 0.5, 0.5);

// Create a rectangle and paint it with the ImageBrush.
Rectangle relativeTileSizeExampleRectangle = new Rectangle();
relativeTileSizeExampleRectangle.Width = 200;
relativeTileSizeExampleRectangle.Height = 150;
relativeTileSizeExampleRectangle.Stroke = Brushes.LimeGreen;
relativeTileSizeExampleRectangle.StrokeThickness = 1;
relativeTileSizeExampleRectangle.Fill = relativeTileSizeImageBrush;

次の例では、 ImageBrushを作成し、その Viewport0,0,25,25 に設定し、その ViewportUnitsAbsoluteに設定し、それを使用して別の四角形を描画します。 その結果、ブラシは幅が 25 ピクセル、高さが 25 ピクセルのタイルを生成します。

次の図は、この例で生成される出力を示しています。

タイル化された TileBrush とビューポートを示す 48 個のチェリーを含む四角形。


//
// Create an ImageBrush and set the size of each
// tile to 25 by 25 pixels.
//
ImageBrush absoluteTileSizeImageBrush = new ImageBrush();
absoluteTileSizeImageBrush.ImageSource =
     new BitmapImage(new Uri(@"sampleImages\cherries_larger.jpg", UriKind.Relative));
absoluteTileSizeImageBrush.TileMode = TileMode.Tile;

// Specify that the Viewport is to be interpreted as
// an absolute value.
absoluteTileSizeImageBrush.ViewportUnits = BrushMappingMode.Absolute;

// Set the size of the base tile. Had we left ViewportUnits set
// to RelativeToBoundingBox (the default value),
// each tile would be 25 times the size of the area being
// painted. Because ViewportUnits is set to Absolute,
// the following line creates tiles that are 25 by 25 pixels.
absoluteTileSizeImageBrush.Viewport = new Rect(0, 0, 25, 25);

// Create a rectangle and paint it with the ImageBrush.
Rectangle absoluteTileSizeExampleRectangle = new Rectangle();
absoluteTileSizeExampleRectangle.Width = 200;
absoluteTileSizeExampleRectangle.Height = 150;
absoluteTileSizeExampleRectangle.Stroke = Brushes.LimeGreen;
absoluteTileSizeExampleRectangle.StrokeThickness = 1;
absoluteTileSizeExampleRectangle.Fill = absoluteTileSizeImageBrush;

上記の例は、より大きなサンプルの一部です。 完全なサンプルについては、ImageBrush サンプルを参照してください。

この例では ImageBrush クラスを使用していますが、他のViewport オブジェクト (つまり、ViewportUnitsTileBrush) に対して、DrawingBrushプロパティとVisualBrush プロパティは同じように動作します。 ImageBrush およびその他の TileBrush オブジェクトの詳細については、「イメージ、描画、およびビジュアルを使用した描画」を参照してください。

こちらも参照ください