Partilhar via


Como: Pintar uma área com uma imagem

Este exemplo mostra como usar a classe ImageBrush para pintar uma área com uma imagem . Um ImageBrush exibe uma única imagem, que é especificada por sua propriedade ImageSource.

Exemplo

O exemplo a seguir pinta o Background de um botão, usando um 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="https://schemas.microsoft.com/winfx/2006/xaml/presentation" 
  xmlns:x="https://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>

Por padrão, um ImageBrush alonga a imagem para preencher completamente a área que você está pintando. No exemplo anterior, a imagem é estendida para preencher o botão, possivelmente distorcendo a imagem. Você pode controlar esse comportamento, definindo a propriedade Stretch do TileBrush como Uniform ou UniformToFill, que faz com que o pincel preserve a razão de proporção da imagem.

Se você definir as propriedades Viewport e TileMode de um ImageBrush, você pode criar um padrão de repetição. O exemplo a seguir pinta um botão usando um padrão que é criado a partir de uma imagem.

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="https://schemas.microsoft.com/winfx/2006/xaml/presentation" 
  xmlns:x="https://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 Pintura com Imagens, Desenhos e Visuais.

Este código de exemplo é parte de um exemplo maior fornecido para a classe ImageBrush. For the complete sample, see Exemplo de ImageBrush.

Consulte também

Tarefas

Exemplo de ImageBrush

Conceitos

Pintura com Imagens, Desenhos e Visuais