Este artigo foi traduzido por máquina. Para visualizar o arquivo em inglês, marque a caixa de seleção Inglês. Você também pode exibir o texto Em inglês em uma janela pop-up, movendo o ponteiro do mouse sobre o texto.
Tradução
Inglês

Visão geral de pincéis do WPF

 

Publicado: junho de 2016

Tudo o que é visível na tela é visível porque ela era pintada por um pincel. Por exemplo, um pincel é usado para descrever o plano de fundo de um botão, o primeiro plano do texto e o preenchimento de uma forma. Este tópico apresenta os conceitos de pintura com Windows Presentation Foundation (WPF) pincéis e fornece exemplos. Pincéis permitem que você pinte UI (interface do usuário) objetos com nada de cores simples e sólidas para conjuntos complexos de padrões e imagens.

Um Brush "pinta" uma área com sua saída. Pincéis diferentes têm diferentes tipos de saída. Alguns pincéis pintar uma área com uma cor sólida, outras pessoas com um gradiente, padrão, imagem ou desenho. A ilustração a seguir mostra exemplos de cada um dos diferentes Brush tipos.

Tipos de pincel

Exemplos de pincel

A maioria dos objetos visuais permitem especificar como eles são pintados. A tabela a seguir lista algumas comuns objetos e propriedades com o qual você pode usar um Brush.

CLASS

Propriedades de pincel

Border

BorderBrush, Background

Control

Background, Foreground

Panel

Background

Pen

Brush

Shape

Fill, Stroke

TextBlock

Background

As seções a seguir descrevem as diferentes Brush tipos e fornecem um exemplo de cada um.

Um SolidColorBrush pinta uma área com um sólido Color. Há várias maneiras para especificar o Color de um SolidColorBrush: por exemplo, você pode especificar seus canais alfabéticos, vermelhos, azuis e verde ou usar uma de cor predefinidos fornecido pelo Colors classe.

O exemplo a seguir usa um SolidColorBrush para pintar o Fill de um Rectangle. A ilustração a seguir mostra o retângulo pintado.

Um retângulo pintado com um SolidColorBrush

Um retângulo pintado com um SolidColorBrush

Rectangle exampleRectangle = new Rectangle();
exampleRectangle.Width = 75;
exampleRectangle.Height = 75;

// Create a SolidColorBrush and use it to
// paint the rectangle.
SolidColorBrush myBrush = new SolidColorBrush(Colors.Red);
exampleRectangle.Fill = myBrush;
<Rectangle Width="75" Height="75">
  <Rectangle.Fill>
    <SolidColorBrush Color="Red" />
  </Rectangle.Fill>
</Rectangle>

Para obter mais informações sobre o SolidColorBrush de classe, consulte Pintura com cores sólidas e gradientes Overview.

Um LinearGradientBrush pinta uma área com um gradiente linear. Um gradiente linear combina duas ou mais cores em uma linha, o eixo de gradiente. Você usa GradientStop objetos para especificar as cores no gradiente e suas posições.

O exemplo a seguir usa um LinearGradientBrush para pintar o Fill de um Rectangle. A ilustração a seguir mostra o retângulo pintado.

Um retângulo pintado com um LinearGradientBrush

Um retângulo pintado com um LinearGradientBrush

Rectangle exampleRectangle = new Rectangle();
exampleRectangle.Width = 75;
exampleRectangle.Height = 75;

// Create a LinearGradientBrush and use it to
// paint the rectangle.
LinearGradientBrush myBrush = new LinearGradientBrush();
myBrush.GradientStops.Add(new GradientStop(Colors.Yellow, 0.0));
myBrush.GradientStops.Add(new GradientStop(Colors.Orange, 0.5));
myBrush.GradientStops.Add(new GradientStop(Colors.Red, 1.0));

exampleRectangle.Fill = myBrush;
<Rectangle Width="75" Height="75">
  <Rectangle.Fill>
    <LinearGradientBrush>
      <GradientStop Color="Yellow" Offset="0.0" />
      <GradientStop Color="Orange" Offset="0.5" />
      <GradientStop Color="Red" Offset="1.0" />
    </LinearGradientBrush>
  </Rectangle.Fill>
</Rectangle>

Para obter mais informações sobre o LinearGradientBrush de classe, consulte Pintura com cores sólidas e gradientes Overview.

Um RadialGradientBrush pinta uma área com um gradiente radial. Um gradiente radial combina duas ou mais cores em um círculo. Assim como acontece com o LinearGradientBrush classe, use GradientStop objetos para especificar as cores no gradiente e suas posições.

O exemplo a seguir usa um RadialGradientBrush para pintar o Fill de um Rectangle. A ilustração a seguir mostra o retângulo pintado.

Um retângulo pintado com um RadialGradientBrush

Um retângulo pintado com um RadialGradientBrush

Rectangle exampleRectangle = new Rectangle();
exampleRectangle.Width = 75;
exampleRectangle.Height = 75;

// Create a RadialGradientBrush and use it to
// paint the rectangle.
RadialGradientBrush myBrush = new RadialGradientBrush();
myBrush.GradientOrigin = new Point(0.75, 0.25);
myBrush.GradientStops.Add(new GradientStop(Colors.Yellow, 0.0));
myBrush.GradientStops.Add(new GradientStop(Colors.Orange, 0.5));
myBrush.GradientStops.Add(new GradientStop(Colors.Red, 1.0));

exampleRectangle.Fill = myBrush;
<Rectangle Width="75" Height="75">
  <Rectangle.Fill>
    <RadialGradientBrush GradientOrigin="0.75,0.25">
      <GradientStop Color="Yellow" Offset="0.0" />
      <GradientStop Color="Orange" Offset="0.5" />
      <GradientStop Color="Red" Offset="1.0" />
    </RadialGradientBrush>
  </Rectangle.Fill>
</Rectangle>

Para obter mais informações sobre o RadialGradientBrush de classe, consulte Pintura com cores sólidas e gradientes Overview.

Um ImageBrush pinta uma área com um ImageSource.

O exemplo a seguir usa um ImageBrush para pintar o Fill de um Rectangle. A ilustração a seguir mostra o retângulo pintado.

Um retângulo pintado por um ImageBrush

Um retângulo pintado usando uma imagem

Rectangle exampleRectangle = new Rectangle();
exampleRectangle.Width = 75;
exampleRectangle.Height = 75;

// Create an ImageBrush and use it to
// paint the rectangle.
ImageBrush myBrush = new ImageBrush();
myBrush.ImageSource = 
    new BitmapImage(new Uri(@"sampleImages\pinkcherries.jpg", UriKind.Relative));

exampleRectangle.Fill = myBrush;
<Rectangle Width="75" Height="75">
  <Rectangle.Fill>
    <ImageBrush ImageSource="sampleImages\pinkcherries.jpg"  />
  </Rectangle.Fill>
</Rectangle>

Para obter mais informações sobre o ImageBrush de classe, consulte Pintura com imagens, desenhos e visuais.

Um DrawingBrush pinta uma área com um Drawing. Um Drawing pode conter imagens, formas, texto e mídia.

O exemplo a seguir usa um DrawingBrush para pintar o Fill de um Rectangle. A ilustração a seguir mostra o retângulo pintado.

Um retângulo pintado com um DrawingBrush

Um retângulo pintado com um DrawingBrush

Rectangle exampleRectangle = new Rectangle();
exampleRectangle.Width = 75;
exampleRectangle.Height = 75;

// Create a DrawingBrush and use it to
// paint the rectangle.
DrawingBrush myBrush = new DrawingBrush();

GeometryDrawing backgroundSquare =
    new GeometryDrawing(
        Brushes.White,
        null,
        new RectangleGeometry(new Rect(0, 0, 100, 100)));

GeometryGroup aGeometryGroup = new GeometryGroup();
aGeometryGroup.Children.Add(new RectangleGeometry(new Rect(0, 0, 50, 50)));
aGeometryGroup.Children.Add(new RectangleGeometry(new Rect(50, 50, 50, 50)));

LinearGradientBrush checkerBrush = new LinearGradientBrush();
checkerBrush.GradientStops.Add(new GradientStop(Colors.Black, 0.0));
checkerBrush.GradientStops.Add(new GradientStop(Colors.Gray, 1.0));

GeometryDrawing checkers = new GeometryDrawing(checkerBrush, null, aGeometryGroup);

DrawingGroup checkersDrawingGroup = new DrawingGroup();
checkersDrawingGroup.Children.Add(backgroundSquare);
checkersDrawingGroup.Children.Add(checkers);

myBrush.Drawing = checkersDrawingGroup;
myBrush.Viewport = new Rect(0, 0, 0.25, 0.25);
myBrush.TileMode = TileMode.Tile;

exampleRectangle.Fill = myBrush;
<Rectangle Width="75" Height="75">
  <Rectangle.Fill>
    <DrawingBrush Viewport="0,0,0.25,0.25" TileMode="Tile">
      <DrawingBrush.Drawing>
        <DrawingGroup>
          <GeometryDrawing Brush="White">
            <GeometryDrawing.Geometry>
              <RectangleGeometry Rect="0,0,100,100" />
            </GeometryDrawing.Geometry>
          </GeometryDrawing>

          <GeometryDrawing>
            <GeometryDrawing.Geometry>
              <GeometryGroup>
                <RectangleGeometry Rect="0,0,50,50" />
                <RectangleGeometry Rect="50,50,50,50" />
              </GeometryGroup>
            </GeometryDrawing.Geometry>
            <GeometryDrawing.Brush>
              <LinearGradientBrush>
                <GradientStop Offset="0.0" Color="Black" />
                <GradientStop Offset="1.0" Color="Gray" />
              </LinearGradientBrush>
            </GeometryDrawing.Brush>
          </GeometryDrawing>
        </DrawingGroup>
      </DrawingBrush.Drawing>
    </DrawingBrush>
  </Rectangle.Fill>
</Rectangle>

Para obter mais informações sobre o DrawingBrush de classe, consulte Pintura com imagens, desenhos e visuais.

Um VisualBrush pinta uma área com um Visual objeto. Exemplos de objetos visuais Button, Page, e MediaElement. Um VisualBrush também permite projetar o conteúdo de uma parte do seu aplicativo em outra área; é muito útil para criar efeitos de reflexão e ampliar partes da tela.

O exemplo a seguir usa um VisualBrush para pintar o Fill de um Rectangle. A ilustração a seguir mostra o retângulo pintado.

Um retângulo pintado com um VisualBrush

Um retângulo pintado com um VisualBrush

Rectangle exampleRectangle = new Rectangle();
exampleRectangle.Width = 75;
exampleRectangle.Height = 75;

// Create a VisualBrush and use it
// to paint the rectangle.
VisualBrush myBrush = new VisualBrush();

//
// Create the brush's contents.
//
StackPanel aPanel = new StackPanel();

// Create a DrawingBrush and use it to
// paint the panel.
DrawingBrush myDrawingBrushBrush = new DrawingBrush();
GeometryGroup aGeometryGroup = new GeometryGroup();
aGeometryGroup.Children.Add(new RectangleGeometry(new Rect(0, 0, 50, 50)));
aGeometryGroup.Children.Add(new RectangleGeometry(new Rect(50, 50, 50, 50)));
RadialGradientBrush checkerBrush = new RadialGradientBrush();
checkerBrush.GradientStops.Add(new GradientStop(Colors.MediumBlue, 0.0));
checkerBrush.GradientStops.Add(new GradientStop(Colors.White, 1.0));
GeometryDrawing checkers = new GeometryDrawing(checkerBrush, null, aGeometryGroup);
myDrawingBrushBrush.Drawing = checkers;
aPanel.Background = myDrawingBrushBrush;

// Create some text.
TextBlock someText = new TextBlock();
someText.Text = "Hello, World";
FontSizeConverter fSizeConverter = new FontSizeConverter();
someText.FontSize = (double)fSizeConverter.ConvertFromString("10pt");
someText.Margin = new Thickness(10);

aPanel.Children.Add(someText);

myBrush.Visual = aPanel;
exampleRectangle.Fill = myBrush;

<Rectangle Width="75" Height="75">
  <Rectangle.Fill>
    <VisualBrush TileMode="Tile">
      <VisualBrush.Visual>
        <StackPanel>
          <StackPanel.Background>
            <DrawingBrush>
              <DrawingBrush.Drawing>
                <GeometryDrawing>
                  <GeometryDrawing.Brush>
                    <RadialGradientBrush>
                      <GradientStop Color="MediumBlue" Offset="0.0" />
                      <GradientStop Color="White" Offset="1.0" />
                    </RadialGradientBrush>
                  </GeometryDrawing.Brush>
                  <GeometryDrawing.Geometry>
                    <GeometryGroup>
                      <RectangleGeometry Rect="0,0,50,50" />
                      <RectangleGeometry Rect="50,50,50,50" />
                    </GeometryGroup>
                  </GeometryDrawing.Geometry>
                </GeometryDrawing>
              </DrawingBrush.Drawing>
            </DrawingBrush>
          </StackPanel.Background>
          <TextBlock FontSize="10pt" Margin="10">Hello, World!</TextBlock>
        </StackPanel>
      </VisualBrush.Visual>
    </VisualBrush>
  </Rectangle.Fill>
</Rectangle>

Para obter mais informações sobre o VisualBrush de classe, consulte Pintura com imagens, desenhos e visuais.

Para sua conveniência, Windows Presentation Foundation (WPF) fornece um conjunto de predefinidos e pincéis do sistema que você pode usar para pintar objetos.

Brush objetos fornecem um Opacity propriedade que pode ser usada para fazer um pincel transparente ou parcialmente transparente. Um Opacity valor 0 torna um pincel completamente transparente, enquanto um Opacity valor 1 faz um pincel completamente opaco. O exemplo a seguir usa o Opacity propriedade para tornar um SolidColorBrush 25 por cento opaco.

<Rectangle Width="100" Height="100">
  <Rectangle.Fill>
    <SolidColorBrush Color="Blue" Opacity="0.25" />
  </Rectangle.Fill>
</Rectangle>
Rectangle myRectangle = new Rectangle();
myRectangle.Width = 100;
myRectangle.Height = 100;
SolidColorBrush partiallyTransparentSolidColorBrush
    = new SolidColorBrush(Colors.Blue);
partiallyTransparentSolidColorBrush.Opacity = 0.25;
myRectangle.Fill = partiallyTransparentSolidColorBrush;

Se o pincel contém cores parcialmente transparentes, o valor de opacidade da cor é combinado a multiplicação com o valor de opacidade do pincel. Por exemplo, se um pincel tem um valor de opacidade de 0,5 e uma cor usada no pincel também tem um valor de opacidade de 0,5, a cor de saída tem um valor de opacidade de 0,25.

System_CAPS_noteObservação

É mais eficiente para alterar o valor de opacidade de um pincel de alterar a opacidade de um elemento inteiro usando seu UIElement.Opacity propriedade.

Girar, dimensionar, inclinar e converter o conteúdo do pincel usando seu Transform ou RelativeTransform Propriedades. Para obter mais informações, consulte Visão geral de transformação de pincel.

Porque eles são Animatable objetos, Brush objetos podem ser animados. Para obter mais informações, consulte Visão geral da animação.

Porque ele herda o Freezable classe, a Brush classe fornece vários recursos especiais: Brush objetos podem ser declarados como recursos, compartilhados entre vários objetos e clonado. Além disso, todos os Brush tipos exceto VisualBrush pode ser transformado em somente leitura para melhorar o desempenho e tornados thread-safe.

Para obter mais informações sobre os diferentes recursos fornecidos pelo Freezable objetos, consulte Visão geral de objetos Freezable.

Para obter mais informações sobre por que VisualBrush objetos não podem ser congeladas, consulte o VisualBrush página de tipo.

Mostrar: