Compartir a través de


Cómo: Establecer el tamaño del icono para un TileBrush

En este ejemplo se muestra cómo establecer el tamaño del icono para .TileBrush De forma predeterminada, TileBrush produce un azulejo único que rellena completamente el área que está pintando. Puede invalidar este comportamiento estableciendo las Viewport propiedades y ViewportUnits .

La Viewport propiedad especifica el tamaño del icono de un TileBrush. De forma predeterminada, el valor de la Viewport propiedad es relativo al tamaño del área que se está pintando. Para que la Viewport propiedad especifique un tamaño de mosaico absoluto, establezca la ViewportUnits propiedad en Absolute.

Ejemplo

En el ejemplo siguiente se usa un ImageBrush, un tipo de TileBrush, para pintar un rectángulo con mosaicos. En el ejemplo se establece cada icono en un 50 por ciento en el 50 por ciento del área de salida (el rectángulo). Como resultado, el rectángulo se pinta con cuatro proyecciones de la imagen.

En la ilustración siguiente se muestra la salida que genera el ejemplo:

Rectángulo con cuatro cerezas que muestran mosaicos con un pincel de imagen.


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

En el siguiente ejemplo, se crea un ImageBrush, se establece su Viewport en 0,0,25,25 y su ViewportUnits en Absolute, y se usa para pintar otro rectángulo. Como resultado, el pincel genera iconos que tienen un ancho de 25 píxeles y un alto de 25 píxeles .

En la ilustración siguiente se muestra la salida que genera el ejemplo:

Un rectángulo con cuarenta y ocho cerezas que muestran un TileBrush en mosaico con una ventana de vista.


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

Los ejemplos anteriores forman parte de un ejemplo mayor. Para obtener el ejemplo completo, consulte Ejemplo de ImageBrush.

Aunque en este ejemplo se usa la ImageBrush clase , las Viewport propiedades y ViewportUnits se comportan de forma idéntica para los demás TileBrush objetos, es decir, para DrawingBrush y VisualBrush. Para obtener más información sobre ImageBrush y los demás TileBrush objetos, vea Pintura con imágenes, dibujos y objetos visuales.

Consulte también