Nasıl yapılır: TileBrush için Döşeme Boyutunu Ayarlama

Bu örnekte, bir için kutucuk boyutunu ayarlamayı TileBrush gösterir. Varsayılan olarak, TileBrush bir tabloyu tamamen dolduran tek bir kutucuk üretir. ve özelliklerini ayarerek bu davranışı geçersiz ViewportViewportUnits kılabilirsiniz.

Viewportözelliği, bir için kutucuk boyutunu TileBrush belirtir. Varsayılan olarak, Viewport özelliğin değeri boyanan alan boyutuna göredir. Özelliğin mutlak Viewport bir kutucuk boyutu belirtmesi için özelliğini ViewportUnits olarak Absolute ayarlayın.

Örnek

Aşağıdaki örnekte ImageBrush kutucuklarla bir dikdörtgen boyamak için türünde TileBrush bir kullanılır. Örnek, her kutucuğu çıkış alanında (dikdörtgen) yüzde 50'ye ayarlar. Sonuç olarak dikdörtgen, görüntünün dört projeksiyonu ile boyanmış olur.

Aşağıdaki çizimde, örneğin ürettiği çıkış gösterilmiştir:

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;

Sonraki örnek bir ImageBrush oluşturur, ve onu olarak Viewport ayarlar ve başka bir dikdörtgen 0,0,25,25ViewportUnitsAbsolute boyamak için bunu kullanır. Sonuç olarak fırça, genişliği 25 piksel ve yüksekliği 25 piksel olan kutucuklar üretir.

Aşağıdaki çizimde, örneğin ürettiği çıkış gösterilmiştir:

A rectangle with forty-eight cherries demonstrating a tiled TileBrush with a Viewport.


//
// 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;

Yukarıdaki örnekler daha büyük bir örneğin parçasıdır. Tam örnek için bkz. ImageBrush Örneği.

Bu örnek sınıfını kullanıyor olsa da ve özellikleri, ve için diğer ImageBrush nesneler için aynı şekilde ViewportViewportUnitsTileBrushDrawingBrushVisualBrush davranır. ve diğer nesneler hakkında ImageBrush daha fazla bilgi için TileBrush bkz. ImageBrush

Ayrıca bkz.