操作說明:設定 TileBrush 的並排顯示大小
此範例示範如何設定 TileBrush 的圖格大小。 根據預設,TileBrush 會產生一個完全填滿您正在繪製的區域的單一圖格。 您可以透過設定 Viewport 和 ViewportUnits 屬性來覆寫此行為。
Viewport 屬性可指定 TileBrush 的圖格大小。 根據預設,Viewport 屬性的值相對於被繪製區域的大小。 若要讓 Viewport 屬性指定絕對圖格大小,請將 ViewportUnits 屬性設定為 Absolute。
範例
以下範例使用 ImageBrush (一種 TileBrush 的類型) 來繪製具有圖格的矩形。 這個範例會將每個並排顯示設為輸出區域 (即矩形) 的 50% x 50%。 因此,矩形會以影像的四個投影繪製。
下圖顯示了該範例所產生的輸出:
一個包含四顆櫻桃的矩形,示範了如何使用影像畫筆進行圖格填充。
//
// 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 個像素的並排顯示。
下圖顯示了該範例所產生的輸出:
一個包含四十八顆櫻桃的矩形,示範了具有 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 類別,但 Viewport 和 ViewportUnits 屬性對於其他 TileBrush 物件 (即對於 DrawingBrush 和 VisualBrush) 的行為相同。 如需 ImageBrush 和其他 TileBrush 物件的詳細資訊,請參閱使用影像、繪圖和視覺效果繪製。