Procedura: impostare la dimensione degli elementi affiancati di un TileBrush
In questo esempio viene illustrato come impostare le dimensioni del riquadro per un oggetto TileBrush. Per impostazione predefinita, un oggetto TileBrush produce un singolo riquadro che riempie completamente l'area da disegnare. È possibile eseguire l'override di questo comportamento impostando le Viewport proprietà e ViewportUnits .
La Viewport proprietà specifica le dimensioni del riquadro per un oggetto TileBrush. Per impostazione predefinita, il valore della Viewport proprietà è relativo alle dimensioni dell'area da disegnare. Per fare in modo che la Viewport proprietà specifichi una dimensione assoluta del riquadro, impostare la ViewportUnits proprietà su Absolute.
Esempio
Nell'esempio seguente viene usato un ImageBrushoggetto , un tipo di TileBrush, per disegnare un rettangolo con riquadri. L'esempio imposta ogni tessera su un valore pari a 50% x 50% dell'area di output (rettangolo). Di conseguenza, il rettangolo viene disegnato con quattro proiezioni dell'immagine.
La figura seguente mostra l'output prodotto dall'esempio:
//
// 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 ImageBrushoggetto , viene impostato Viewport su 0,0,25,25
e su ViewportUnitsAbsolutee viene usato per disegnare un altro rettangolo. Di conseguenza, il pennello genera tessere con una larghezza pari a 25 pixel e un'altezza pari a 25 pixel.
La figura seguente mostra l'output prodotto dall'esempio:
//
// 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 esempio più esaustivo. Per l'esempio completo, vedere ImageBrush Sample (Esempio ImageBrush).
Anche se in questo esempio viene utilizzata la ImageBrush classe , le Viewport proprietà e ViewportUnits si comportano in modo identico per gli altri TileBrush oggetti, ovvero per DrawingBrush e VisualBrush. Per altre informazioni su ImageBrush e sugli altri TileBrush oggetti, vedere Disegnare con immagini, disegni e oggetti visivi.
Vedi anche
.NET Desktop feedback