Condividi tramite


Procedura: Impostare le dimensioni del tile per un TileBrush

In questo esempio viene illustrato come impostare le dimensioni del riquadro per un TileBrush. Per impostazione predefinita, un TileBrush produce un singolo riquadro che riempie completamente l'area che stai dipingendo. È possibile eseguire l'override di questo comportamento impostando le proprietà Viewport e ViewportUnits.

La proprietà Viewport specifica le dimensioni del riquadro per un TileBrush. Per impostazione predefinita, il valore della proprietà Viewport è relativo alle dimensioni dell'area da disegnare. Per fare in modo che la proprietà Viewport specifichi una dimensione assoluta del riquadro, impostare la proprietà ViewportUnits su Absolute.

Esempio

Nel seguente esempio viene utilizzata una ImageBrush, un tipo di TileBrush, per disegnare un rettangolo con piastrelle. Nell'esempio ogni riquadro viene impostato al 50 percento per 50 percento dell'area di uscita (il rettangolo). Di conseguenza, il rettangolo viene disegnato con quattro proiezioni dell'immagine.

La figura seguente mostra l'output prodotto dall'esempio:

Un rettangolo con quattro ciliegie che illustrano l'affiancamento con un pennello per immagini.


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

Nell'esempio seguente viene creato un ImageBrush, il relativo Viewport viene impostato su 0,0,25,25 e il relativo ViewportUnits su Absolute, e viene usato per disegnare un altro rettangolo. Di conseguenza, il pennello produce riquadri con una larghezza di 25 pixel e un'altezza di 25 pixel.

La figura seguente mostra l'output prodotto dall'esempio:

Rettangolo con quarantotto ciliegie che illustrano un TileBrush con un 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;

Gli esempi precedenti fanno parte di un campione più ampio. Per l'esempio completo, vedere l'esempio di ImageBrush .

Anche se in questo esempio viene utilizzata la classe ImageBrush, le proprietà Viewport e ViewportUnits si comportano in modo identico per gli altri oggetti TileBrush, ovvero per DrawingBrush e VisualBrush. Per altre informazioni su ImageBrush e sugli altri oggetti TileBrush, vedere Disegnare con immagini, disegni e oggetti visivi.

Vedere anche