共用方式為


操作說明:設定 TileBrush 的並排顯示大小

此範例示範如何設定 TileBrush 的圖格大小。 根據預設,TileBrush 會產生一個完全填滿您正在繪製的區域的單一圖格。 您可以透過設定 ViewportViewportUnits 屬性來覆寫此行為。

Viewport 屬性可指定 TileBrush 的圖格大小。 根據預設,Viewport 屬性的值相對於被繪製區域的大小。 若要讓 Viewport 屬性指定絕對圖格大小,請將 ViewportUnits 屬性設定為 Absolute

範例

以下範例使用 ImageBrush (一種 TileBrush 的類型) 來繪製具有圖格的矩形。 這個範例會將每個並排顯示設為輸出區域 (即矩形) 的 50% x 50%。 因此,矩形會以影像的四個投影繪製。

下圖顯示了該範例所產生的輸出:

A rectangle with four cherries demonstrating tiling with an image brush.一個包含四顆櫻桃的矩形,示範了如何使用影像畫筆進行圖格填充。


//
// 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、將其 Viewport 設為 0,0,25,25、將其 ViewportUnits 設為 Absolute,並用它來繪製另一個矩形。 因此,筆刷會產生寬度為 25 個像素,且高度為 25 個像素的並排顯示。

下圖顯示了該範例所產生的輸出:

A rectangle with forty-eight cherries demonstrating a tiled TileBrush with a Viewport.一個包含四十八顆櫻桃的矩形,示範了具有 Viewport 的圖格 TileBrush。


//
// 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 類別,但 ViewportViewportUnits 屬性對於其他 TileBrush 物件 (即對於 DrawingBrushVisualBrush) 的行為相同。 如需 ImageBrush 和其他 TileBrush 物件的詳細資訊,請參閱使用影像、繪圖和視覺效果繪製

另請參閱