Pinceles y formas rellenas
Una figura cerrada como un rectángulo o una elipse consta de un contorno y un interior. El contorno se dibuja con un objeto Pen y el interior se rellena con un objeto Brush . Windows GDI+ proporciona varias clases de pincel para rellenar los interiores de figuras cerradas: SolidBrush, HatchBrush, TextureBrush, LinearGradientBrush y PathGradientBrush. Todas estas clases heredan de la clase Brush . En la ilustración siguiente se muestra un rectángulo relleno con un pincel sólido y una elipse rellena con un pincel de sombreado.
Para rellenar una forma cerrada, necesita un objeto Graphics y un objeto Brush . El objeto Graphics proporciona métodos, como FillRectangle y FillEllipse, y el objeto Brush almacena atributos del relleno, como el color y el patrón. La dirección del objeto Brush se pasa como uno de los argumentos al método fill. En el ejemplo siguiente se rellena una elipse con un color rojo sólido.
SolidBrush mySolidBrush(Color(255, 255, 0, 0));
myGraphics.FillEllipse(&mySolidBrush, 0, 0, 60, 40);
Tenga en cuenta que en el ejemplo anterior, el pincel es de tipo SolidBrush, que hereda de Brush.
Al rellenar una forma con un pincel de sombreado, se especifica un color de primer plano, un color de fondo y un estilo de sombreado. El color de primer plano es el color del sombreado.
HatchBrush myHatchBrush(
HatchStyleVertical,
Color(255, 0, 0, 255),
Color(255, 0, 255, 0));
GDI+ proporciona más de 50 estilos de sombreado, especificados en HatchStyle. Los tres estilos que se muestran en la ilustración siguiente son Horizontal, ForwardDiagonal y Cross.
Con un pincel de textura, puede rellenar una forma con un patrón almacenado en un mapa de bits. Por ejemplo, supongamos que la siguiente imagen se almacena en un archivo de disco denominado MyTexture.bmp.
En el ejemplo siguiente se rellena una elipse repitiendo la imagen almacenada en MyTexture.bmp.
Image myImage(L"MyTexture.bmp");
TextureBrush myTextureBrush(&myImage);
myGraphics.FillEllipse(&myTextureBrush, 0, 0, 100, 50);
En la siguiente ilustración se muestra la elipse rellenada.
Puede usar un pincel degradado para rellenar una forma con un color que cambie gradualmente de una parte de la forma a otra. Por ejemplo, un pincel degradado horizontal cambiará el color a medida que se mueve del lado izquierdo de una figura al lado derecho. En el ejemplo siguiente se rellena una elipse con un pincel degradado horizontal que cambia de azul a verde mientras se mueve desde el lado izquierdo de la elipse al lado derecho.
LinearGradientBrush myLinearGradientBrush(
myRect,
Color(255, 0, 0, 255),
Color(255, 0, 255, 0),
LinearGradientModeHorizontal);
myGraphics.FillEllipse(&myLinearGradientBrush, myRect);
En la siguiente ilustración se muestra la elipse rellenada.
Un pincel de degradado de trazado se puede configurar para cambiar el color a medida que se mueve desde el centro de una figura hacia el límite.
Los pinceles de degradado de trazado son bastante flexibles. El pincel de degradado usado para rellenar el triángulo en la ilustración siguiente cambia gradualmente de rojo en el centro a cada uno de tres colores diferentes en los vértices.