Gewusst wie: Festlegen der Flächengröße für ein TileBrush-Objekt
Aktualisiert: November 2007
In diesem Beispiel wird das Festlegen der Flächengröße für ein TileBrush-Objekt erläutert. Standardmäßig erstellt ein TileBrush-Objekt eine einzelne Fläche, die den gezeichneten Bereich vollständig ausfüllt. Dieses Verhalten kann durch Festlegen der Eigenschaften Viewport und ViewportUnits überschrieben werden.
Die Viewport-Eigenschaft gibt die Flächengröße für ein TileBrush-Objekt an. Standardmäßig ist der Wert der Viewport-Eigenschaft relativ zur Größe des gezeichneten Bereichs. Wenn die Viewport-Eigenschaft eine absolute Flächengröße angeben soll, müssen Sie die ViewportUnits-Eigenschaft auf Absolute festlegen.
Beispiel
Im folgenden Beispiel wird mithilfe eines ImageBrush-Objekts (einem TileBrush-Typ) ein Rechteck mit Flächen gezeichnet. In diesem Beispiel werden die Seiten der einzelnen Flächen auf 50 Prozent der Seiten des Ausgabebereichs (des Rechtecks) festgelegt. Als Ergebnis wird das Rechteck mit vier Projektionen des Bilds gezeichnet.
In der folgenden Abbildung ist die von diesem Beispiel erstellte Ausgabe dargestellt.
//
// 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;
<!-- The ImageBrush's tiles are set to 50% by 50% of the output area. -->
<Rectangle
Width="200" Height="150"
Stroke="LimeGreen" StrokeThickness="1">
<Rectangle.Fill>
<ImageBrush
Viewport="0,0,0.5,0.5"
TileMode="Tile"
ImageSource="sampleImages\cherries_larger.jpg" />
</Rectangle.Fill>
</Rectangle>
Im folgenden Beispiel wird eine ImageBrush-Klasse erstellt, dessen Viewport-Objekt auf 0,0,25,25 und dessen ViewportUnits-Objekt auf Absolute festgelegt werden. Mit dieser Klasse wird ein weiteres Rechteck gezeichnet. Als Ergebnis erzeugt der Pinsel Flächen mit einer Breite von 25 Pixel und einer Höhe von ebenfalls 25 Pixel.
In der folgenden Abbildung ist die von diesem Beispiel erstellte Ausgabe dargestellt.
//
// 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;
<!-- The ImageBrush's tiles are set to 25 by 25 pixels. -->
<Rectangle
Width="200" Height="150"
Stroke="LimeGreen" StrokeThickness="1">
<Rectangle.Fill>
<ImageBrush
Viewport="0,0,25,25"
ViewportUnits="Absolute"
TileMode="Tile"
ImageSource="sampleImages\cherries_larger.jpg" />
</Rectangle.Fill>
</Rectangle>
Die vorangehenden Beispiele sind Teil eines umfangreicheren Beispiels. Das vollständige Beispiel finden Sie unter Beispiel zu ImageBrush.
In diesem Beispiel wird die ImageBrush-Klasse verwendet. Die Eigenschaften Viewport und ViewportUnits für die anderen TileBrush-Objekte, also für DrawingBrush und VisualBrush, verhalten sich jedoch identisch. Weitere Informationen über das ImageBrush-Objekt und die anderen TileBrush-Objekte finden Sie unter Zeichnen mit Bildern, Zeichnungen und visuellen Elementen.
Siehe auch
Aufgaben
Gewusst wie: Erstellen von unterschiedlichen Kachelmustern mit einem TileBrush
Konzepte
Zeichnen mit Bildern, Zeichnungen und visuellen Elementen