ImageBrush Class
Assembly: PresentationCore (in presentationcore.dll)
XML Namespace: http://schemas.microsoft.com/winfx/2006/xaml/presentation
An ImageBrush is a type of TileBrush that defines its content as an image, which is specified by its ImageSource property. You can control how the image is stretched, aligned, and tiled, enabling you to produce patterns and other effects. The following images show some effects that can be achieved with an ImageBrush.
An ImageBrush can paint shapes, controls, text, and more
For more information about ImageBrush features, see the Painting with Images, Drawings, Visuals, and Patterns overview.
Freezable Features
Because the ImageBrush class inherits from Freezable, ImageBrush objects gain several special features, which include the following: they can be declared as resources, shared among multiple objects, made read-only to improve performance, cloned, and made thread-safe. For more information about the features provided by Freezable objects, see the Freezable Objects Overview.
This example shows how to use the ImageBrush class to paint an area by using an image. An ImageBrush displays a single image, which is specified by its ImageSource property.
The following example paints the Background of a button by using an ImageBrush.
using System; using System.Windows; using System.Windows.Controls; using System.Windows.Media.Imaging; using System.Windows.Media; namespace Microsoft.Samples.Graphics.UsingImageBrush { public class PaintingWithImagesExample : Page { public PaintingWithImagesExample() { Background = Brushes.White; StackPanel mainPanel = new StackPanel(); mainPanel.Margin = new Thickness(20.0); // Create a button. Button berriesButton = new Button(); berriesButton.Foreground = Brushes.White; berriesButton.FontWeight = FontWeights.Bold; FontSizeConverter sizeConverter = new FontSizeConverter(); berriesButton.FontSize = (Double)sizeConverter.ConvertFromString("16pt"); berriesButton.FontFamily = new FontFamily("Verdana"); berriesButton.Content = "Berries"; berriesButton.Padding = new Thickness(20.0); berriesButton.HorizontalAlignment = HorizontalAlignment.Left; // Create an ImageBrush. ImageBrush berriesBrush = new ImageBrush(); berriesBrush.ImageSource = new BitmapImage( new Uri(@"sampleImages\berries.jpg", UriKind.Relative) ); // Use the brush to paint the button's background. berriesButton.Background = berriesBrush; mainPanel.Children.Add(berriesButton); this.Content = mainPanel; } } }
<!-- This example shows how to use an ImageBrush to paint shapes and controls. --> <Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Background="White"> <StackPanel Margin="20"> <!-- Sets the button's Background property with an ImageBrush. The resulting button has an image as its background. --> <Button Foreground="White" FontWeight="Bold" FontSize="16pt" FontFamily="Verdana" Content="Berries" Padding="20" HorizontalAlignment="Left"> <Button.Background> <ImageBrush ImageSource="sampleImages\berries.jpg" /> </Button.Background> </Button> </StackPanel> </Page>
By default, an ImageBrush stretches its image to fill the area that you are painting. In the previous example, the image is stretched to fill the button, possibly distorting the image. You can control this behavior by setting the Stretch property of TileBrush to Uniform or UniformToFill, which causes the brush to preserve the aspect ratio of the image.
If you set the Viewport and TileMode properties of an ImageBrush, you can create a repeating pattern. The following example paints a button by using a pattern that is created from an image.
using System; using System.Windows; using System.Windows.Controls; using System.Windows.Media.Imaging; using System.Windows.Media; namespace Microsoft.Samples.Graphics.UsingImageBrush { public class TiledImageBrushExample : Page { public TiledImageBrushExample() { Background = Brushes.White; StackPanel mainPanel = new StackPanel(); mainPanel.Margin = new Thickness(20.0); // Create a button. Button berriesButton = new Button(); berriesButton.Foreground = Brushes.White; berriesButton.FontWeight = FontWeights.Bold; FontSizeConverter sizeConverter = new FontSizeConverter(); berriesButton.FontSize = (Double)sizeConverter.ConvertFromString("16pt"); berriesButton.FontFamily = new FontFamily("Verdana"); berriesButton.Content = "Berries"; berriesButton.Padding = new Thickness(20.0); berriesButton.HorizontalAlignment = HorizontalAlignment.Left; // Create an ImageBrush. ImageBrush berriesBrush = new ImageBrush(); berriesBrush.ImageSource = new BitmapImage( new Uri(@"sampleImages\berries.jpg", UriKind.Relative) ); // Set the ImageBrush's Viewport and TileMode // so that it produces a pattern from // the image. berriesBrush.Viewport = new Rect(0,0,0.5,0.5); berriesBrush.TileMode = TileMode.FlipXY; // Use the brush to paint the button's background. berriesButton.Background = berriesBrush; mainPanel.Children.Add(berriesButton); this.Content = mainPanel; } } }
<!-- This example shows how to use an ImageBrush to paint shapes and controls. --> <Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Background="White"> <StackPanel Margin="20"> <!-- Sets the button's Background property with an ImageBrush. The resulting button has an image as its background. --> <Button Foreground="White" FontWeight="Bold" FontSize="16pt" FontFamily="Verdana" Content="Berries" Padding="20" HorizontalAlignment="Left"> <Button.Background> <!-- The ImageBrush's Viewport and TileMode are set to produce a pattern from the image. --> <ImageBrush Viewport="0,0,0.5,0.5" TileMode="FlipXY" ImageSource="sampleImages\berries.jpg" /> </Button.Background> </Button> </StackPanel> </Page>
For more information about the ImageBrush class, see Painting with Images, Drawings, Visuals, and Patterns Overview.
This code example is part of a larger example that is provided for the ImageBrush class. For the complete sample, see ImageBrush Sample.
More Code
| 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. |
- MediaPermission to display images that you have WebPermission or FileIOPermission access for. Associated enumeration: MediaPermissionImage.SiteOfOriginImage.
- MediaPermission to display images that you don't have WebPermission or FileIOPermission access for. Associated enumeration: MediaPermissionImage.SafeImage.
Windows 98, Windows Server 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
The Microsoft .NET Framework 3.0 is supported on Windows Vista, Microsoft Windows XP SP2, and Windows Server 2003 SP1.