jak ustawić rozmiar kafelka dla Pędzla kafelkowego
W tym przykładzie pokazano, jak ustawić rozmiar kafelka dla TileBrush. Domyślnie TileBrush tworzy pojedynczy kafelek, który całkowicie wypełnia obszar malowany. To zachowanie można zastąpić, ustawiając właściwości Viewport i ViewportUnits.
Właściwość Viewport określa rozmiar kafelka dla TileBrush. Domyślnie wartość właściwości Viewport jest względna względem rozmiaru malowanego obszaru. Aby właściwość Viewport określała bezwzględny rozmiar kafelka, ustaw właściwość ViewportUnits na Absolute.
Przykład
W poniższym przykładzie użyto ImageBrush, typu TileBrush, aby namalować prostokąt z kafelkami. W przykładzie każdy kafelek zajmuje 50 procent na 50 procent obszaru wyniku (prostokąt). W rezultacie prostokąt jest malowany z czterema projekcjami obrazu.
Na poniższej ilustracji przedstawiono dane wyjściowe generowane przez przykład:
//
// 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;
W następnym przykładzie zostanie utworzony ImageBrush, jego Viewport zostanie ustawione na 0,0,25,25
, a jego ViewportUnits na Absolute, i używa się go, aby namalować inny prostokąt. W rezultacie szczotka tworzy kafelki o szerokości 25 pikseli i wysokości 25 pikseli.
Na poniższej ilustracji przedstawiono dane wyjściowe generowane przez przykład:
//
// 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;
Powyższe przykłady są częścią większej próbki. Aby zapoznać się z kompletnym przykładem, zobacz ImageBrush Sample.
Mimo że w tym przykładzie użyto klasy ImageBrush, właściwości Viewport i ViewportUnits zachowują się identycznie dla innych obiektów TileBrush, czyli dla DrawingBrush i VisualBrush. Aby uzyskać więcej informacji na temat ImageBrush i innych obiektów TileBrush, zobacz Malowanie przy użyciu obrazów, rysunków i wizualizacji.
Zobacz też
.NET Desktop feedback