Dela via


Gör så här: Ange panelstorleken för en TileBrush

Det här exemplet visar hur du anger panelstorleken för en TileBrush. Som standard skapar en TileBrush en enda panel som helt fyller det område som du målar. Du kan åsidosätta det här beteendet genom att ange egenskaperna Viewport och ViewportUnits.

Egenskapen Viewport anger panelstorleken för en TileBrush. Som standard är värdet för egenskapen Viewport relativt storleken på det område som målas. Om du vill att egenskapen Viewport ska ange en absolut panelstorlek anger du egenskapen ViewportUnits till Absolute.

Exempel

I följande exempel används en ImageBrush, en typ av TileBrush, för att måla en rektangel med paneler. I exemplet anges varje kakel till 50 procent gånger 50 procent av utdataområdet (rektangeln). Därför målas rektangeln med fyra projektioner av bilden.

Följande bild visar de utdata som exemplet ger:

En rektangel med fyra körsbär som demonstrerar plattsättning med en bildborste.


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

I nästa exempel skapas en ImageBrush, ställer in dess Viewport0,0,25,25 och dess ViewportUnitsAbsolute, och använder den för att måla en annan rektangel. Därför skapar penseln paneler som har en bredd på 25 bildpunkter och en höjd på 25 bildpunkter .

Följande bild visar de utdata som exemplet ger:

En rektangel med fyrtioåtta körsbär som demonstrerar en kakelmönstrad TileBrush med en 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;

Föregående exempel är en del av ett större exempel. Det fullständiga exemplet finns i ImageBrush Sample.

Även om det här exemplet använder klassen ImageBrush fungerar egenskaperna Viewport och ViewportUnits identiskt för de andra TileBrush objekten, det vill säga för DrawingBrush och VisualBrush. Mer information om ImageBrush och andra TileBrush objekt finns i Målning med bilder, ritningar och visuella objekt.

Se även