System.Windows.Media Namesp ...


.NET Framework Class Library
TileBrush Class

Describes a way to paint a region by using one or more tiles.

Namespace:  System.Windows.Media
Assembly:  PresentationCore (in PresentationCore.dll)
Syntax

Visual Basic (Declaration)
Public MustInherit Class TileBrush _
    Inherits Brush
Visual Basic (Usage)
Dim instance As TileBrush
C#
public abstract class TileBrush : Brush
Visual C++
public ref class TileBrush abstract : public Brush
JScript
public abstract class TileBrush extends Brush
XAML
This class is abstract; see Inheritance Hierarchy for derived non-abstract classes usable in XAML.
Remarks

The derived classes of TileBrush define the contents of the tiles that you use to paint a region. For example, use the ImageBrush class to paint an area by using an image.

Use a TileBrush to control how you paint an area. For example, Windows Presentation Foundation (WPF) provides several types of brushes:

When you use the TileBrush to paint an area, instead of painting an area by using a single stretched image, you can paint an area by using a series of image tiles that create a pattern.

When you paint an area by using a TileBrush, you use three components: content, tiles, and the output area. The following illustrations show how these three TileBrush components relate to each other.

Components of a TileBrush with a single tile

TileBrush components
Components of a TileBrush with a TileMode of Tile

Components of a tiled TileBrush

Content: A TileBrush can have different types of content:

You can specify the position and dimensions of TileBrush content by using the Viewbox property.

Tiles: A TileBrush produces one or more tiles. By default, the content of the brush is stretched to fill a single tile and that tile is stretched to fill the output area. The Viewport property is used to specify the size and position of the base tile for the TileBrush. The ViewportUnits property determines whether the size and position of the Viewport are relative to the output area (the default behavior) or whether they are absolute values.

Output Area: The output area is the area that the brush paints, such as the Fill of an Ellipse or the Background of a Button.

For more information about the TileBrush class, see Painting with Images, Drawings, and Visuals .

Freezable Features

A TileBrush is a Freezable type. For information about Freezable features, such as freezing and cloning, see the Freezable Objects Overview.

Notes to Inheritors:

When you inherit from the TileBrush class, you must override the CreateInstanceCore method. For more information about inheriting from Freezable types, see the Freezable Objects Overview.

Examples

This example shows how to use the TileMode property of a TileBrush to create a pattern.

The TileMode property enables you to specify how the content of a TileBrush is repeated, that is, tiled to fill an output area. To create a pattern, you set the TileMode to Tile, FlipX, FlipY, or FlipXY. You must also set the Viewport of the TileBrush so that it is smaller than the area that you are painting; otherwise, only a single tile is produced, regardless which TileMode setting you use.

The following example creates five DrawingBrush objects, gives them each a different TileMode setting, and uses them to paint five rectangles. Although this example uses the DrawingBrush class to demonstrate TileMode behavior, the TileMode property works identically for all the TileBrush objects, that is, for ImageBrush, VisualBrush, and DrawingBrush.

The following illustration shows the output that this example produces.

Tile patterns created with the TileMode property

TileBrush tiling example output
XAML
<!-- Demonstrates TileMode values. -->
<Page  
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:PresentationOptions="http://schemas.microsoft.com/winfx/2006/xaml/presentation/options" 
  xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  mc:Ignorable="PresentationOptions"
  Background="White" Margin="20">
  <Page.Resources>

    <!-- Define a Drawing as a resource that it can be easily used
         as content for all the DrawingBrush objects in this example. -->
    <GeometryDrawing x:Key="TriangleDrawing"
      Geometry="M0,0 L50,0 0,50Z" Brush="#CCCCFF"
      PresentationOptions:Freeze="True" >
      <GeometryDrawing.Pen>
        <Pen Thickness="2" Brush="Black" MiterLimit="0" />
      </GeometryDrawing.Pen>
    </GeometryDrawing>
  </Page.Resources>

  <StackPanel HorizontalAlignment="Left">
    <TextBlock Margin="0,10,0,0">None</TextBlock>
    <Rectangle Width="50" Height="50" Stroke="Black" StrokeThickness="1">
      <Rectangle.Fill>

        <!-- The DrawingBrush's content is not tiled in this example. -->
        <DrawingBrush TileMode="None" 
          Drawing="{StaticResource TriangleDrawing}" />
      </Rectangle.Fill>
    </Rectangle>

    <TextBlock Margin="0,10,0,0">Tile</TextBlock>
    <Rectangle Width="50" Height="50" Stroke="Black" StrokeThickness="1">
      <Rectangle.Fill>

        <!-- The DrawingBrush's content is tiled in this example. 
             The Viewport property is set to create four tiles. -->
        <DrawingBrush TileMode="Tile" Viewport="0,0,0.5,0.5" 
          Drawing="{StaticResource TriangleDrawing}"/>
      </Rectangle.Fill>
    </Rectangle>

    <TextBlock Margin="0,10,0,0">FlipX</TextBlock>
    <Rectangle Width="50" Height="50" Stroke="Black" StrokeThickness="1">
      <Rectangle.Fill>

        <!-- The DrawingBrush's content is flipped horizontally as it is
             tiled in this example. -->
        <DrawingBrush 
          TileMode="FlipX" Viewport="0,0,0.5,0.5"
          Drawing="{StaticResource TriangleDrawing}" />
      </Rectangle.Fill>
    </Rectangle>

    <TextBlock Margin="0,10,0,0">FlipY</TextBlock>
    <Rectangle Width="50" Height="50" Stroke="Black" StrokeThickness="1">
      <Rectangle.Fill>

        <!-- The DrawingBrush's content is flipped vertically as it is
             tiled in this example. -->
        <DrawingBrush TileMode="FlipY" Viewport="0,0,0.5,0.5" 
          Drawing="{StaticResource TriangleDrawing}" />
      </Rectangle.Fill>
    </Rectangle>

    <TextBlock Margin="0,10,0,0">FlipXY</TextBlock>
    <Rectangle Width="50" Height="50" Stroke="Black" StrokeThickness="1">
      <Rectangle.Fill>

        <!-- The DrawingBrush's content is flipped horizontally
             and vertically as it is tiled in this example. -->
        <DrawingBrush TileMode="FlipXY" Viewport="0,0,0.5,0.5" 
          Drawing="{StaticResource TriangleDrawing}" />
      </Rectangle.Fill>
    </Rectangle>

  </StackPanel>
</Page>

More Code

How to: Paint an Area with an Image This example shows how to use the ImageBrush class to paint an area with an image. An ImageBrush displays a single image, which is specified by its ImageSource property.
How to: Preserve the Aspect Ratio of an Image Used as a Background This example shows how to use the Stretch property of an ImageBrush in order to preserve the aspect ratio of the image.
Inheritance Hierarchy

System..::.Object
  System.Windows.Threading..::.DispatcherObject
    System.Windows..::.DependencyObject
      System.Windows..::.Freezable
        System.Windows.Media.Animation..::.Animatable
          System.Windows.Media..::.Brush
            System.Windows.Media..::.TileBrush
              System.Windows.Media..::.DrawingBrush
              System.Windows.Media..::.ImageBrush
              System.Windows.Media..::.VisualBrush
Thread Safety

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Platforms

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Version Information

.NET Framework

Supported in: 3.5, 3.0
See Also

Reference

Other Resources

Tags :


Page view tracker