Comment : définir la taille de la mosaïque pour un TileBrush
Cet exemple montre comment définir la taille de la vignette pour un TileBrush. Par défaut, une TileBrush vignette produit une seule vignette qui remplit complètement la zone que vous peinturez. Vous pouvez remplacer ce comportement en définissant les propriétés et ViewportUnits les Viewport propriétés.
La Viewport propriété spécifie la taille de vignette d’un TileBrush. Par défaut, la valeur de la Viewport propriété est relative à la taille de la zone peinte. Pour que la Viewport propriété spécifie une taille de vignette absolue, définissez la ViewportUnits propriété Absolutesur .
Exemple
L’exemple suivant utilise un ImageBrush, un type de TileBrush, pour peindre un rectangle avec des vignettes. L’exemple définit chaque mosaïque à 50 % de 50 % de la zone de sortie (le rectangle). Le rectangle est donc peint avec quatre projections de l’image.
L’illustration suivante montre la sortie produite par l’exemple :
//
// 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;
L’exemple suivant crée un ImageBrush, définit sa Viewport valeur 0,0,25,25
et sa AbsoluteViewportUnits valeur , et l’utilise pour peindre un autre rectangle. Le pinceau produit ainsi des mosaïques d’une largeur de 25 pixels et d’une hauteur de 25 pixels.
L’illustration suivante montre la sortie produite par l’exemple :
//
// 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;
Les exemples précédents font partie d’un exemple plus complet. Pour l’exemple complet, consultez la page ImageBrush, exemple.
Bien que cet exemple utilise la ImageBrush classe, les propriétés et ViewportUnits les Viewport propriétés se comportent de façon identique pour les autres TileBrush objets, c’est-à-dire pour DrawingBrush et VisualBrush. Pour plus d’informations sur et les ImageBrush autres TileBrush objets, consultez Peinture avec des images, des dessins et des visuels.
Voir aussi
.NET Desktop feedback