Pincéis e formas preenchidas

Uma figura fechada, como um retângulo ou uma elipse, consiste em um contorno e um interior. A estrutura de tópicos é desenhada com um objeto Pen e o interior é preenchido com um objeto Brush . O Windows GDI+ fornece várias classes de pincel para preencher os interiores de figuras fechadas: SolidBrush, HatchBrush, TextureBrush, LinearGradientBrush e PathGradientBrush. Todas essas classes herdam da classe Brush . A ilustração a seguir mostra um retângulo preenchido com um pincel sólido e uma elipse preenchida com um pincel de hachura.

ilustração mostrando um retângulo azul e uma elipse magenta preenchida com um padrão de escotilha azul

 

Pincéis Sólidos

Para preencher uma forma fechada, você precisa de um objeto Graphics e um objeto Brush . O objeto Graphics fornece métodos , como FillRectangle e FillEllipse, e o objeto Brush armazena atributos do preenchimento, como cor e padrão. O endereço do objeto Brush é passado como um dos argumentos para o método de preenchimento. O exemplo a seguir preenche uma elipse com uma cor vermelha sólida.

SolidBrush mySolidBrush(Color(255, 255, 0, 0));
myGraphics.FillEllipse(&mySolidBrush, 0, 0, 60, 40);

Observe que, no exemplo anterior, o pincel é do tipo SolidBrush, que herda de Brush.

Pincéis de Hachura

Ao preencher uma forma com um pincel de hachura, é necessário especificar uma cor de primeiro plano, uma cor da tela de fundo e um estilo de hachura. A cor de primeiro plano é a cor da hachura.

HatchBrush myHatchBrush(
   HatchStyleVertical, 
   Color(255, 0, 0, 255),
   Color(255, 0, 255, 0));

O GDI+ fornece mais de 50 estilos de hachura, especificados em HatchStyle. Os três estilos mostrados na ilustração a seguir são Horizontal, ForwardDiagonal e Cross.

ilustração mostrando três reticências coloridas de teal, cada uma com um estilo de hachura diferente

 

Pincéis de Textura

Com um pincel de textura, é possível preencher uma forma com um padrão armazenado em um bitmap. Por exemplo, suponha que a imagem a seguir seja armazenada em um arquivo de disco chamado MyTexture.bmp.

captura de tela de um pequeno quadrado preenchido com várias cores

O exemplo a seguir preenche uma elipse repetindo a imagem armazenada em MyTexture.bmp.

Image myImage(L"MyTexture.bmp");
TextureBrush myTextureBrush(&myImage);
myGraphics.FillEllipse(&myTextureBrush, 0, 0, 100, 50);

A ilustração a seguir mostra a elipse preenchida.

ilustração mostrando uma elipse preenchida com o padrão definido anteriormente

 

Pincéis de Gradiente

Você pode usar um pincel de gradiente para preencher uma forma com uma cor que muda gradualmente de uma parte da forma para outra. Por exemplo, um pincel de gradiente horizontal mudará de cor à medida que você se mover do lado esquerdo de uma figura para o lado direito. O exemplo a seguir preenche uma elipse com um pincel de gradiente horizontal que muda de azul para verde à medida que você se move do lado esquerdo da elipse para o lado direito.

LinearGradientBrush myLinearGradientBrush(
   myRect,
   Color(255, 0, 0, 255),
   Color(255, 0, 255, 0),
   LinearGradientModeHorizontal);
myGraphics.FillEllipse(&myLinearGradientBrush, myRect); 

A ilustração a seguir mostra a elipse preenchida.

ilustração mostrando uma elipse com um preenchimento gradiente: azul à direita para verde à esquerda

Um pincel de gradiente de caminho pode ser configurado para alterar a cor à medida que você se move do centro de uma figura em direção ao limite.

ilustração de uma elipse que é azul escuro no centro, sombreamento para azul claro na borda

Pincéis de gradiente de caminho são bastante flexíveis. O pincel de gradiente usado para preencher o triângulo nas seguintes ilustrações altera gradualmente de vermelho no centro para cada uma das três cores diferentes nos vértices.

ilustração de um triângulo vermelho no centro, sombreando para uma cor diferente em cada vértice