画笔和填充形状
封闭图(如矩形或椭圆)由轮廓和内部组成。 轮廓用 笔 对象绘制,内部填充有 画笔 对象。 Windows GDI+ 提供了多个画笔类来填充封闭图形的内部:SolidBrush、HatchBrush、TextureBrush、LinearGradientBrush和 PathGradientBrush。 所有这些类都继承自 Brush 类。 下图显示了一个矩形,其中填充了实心画笔,椭圆填充了阴影画笔。
显示蓝色矩形的
实心画笔
若要填充封闭的形状,需要一个 图形 对象和 画笔 对象。 Graphics 对象提供 FillRectangle 和 FillEllipse等方法,Brush 对象存储填充的属性,如颜色和图案。 Brush 对象的地址作为填充方法的参数之一传递。 以下示例用纯红色填充椭圆。
SolidBrush mySolidBrush(Color(255, 255, 0, 0));
myGraphics.FillEllipse(&mySolidBrush, 0, 0, 60, 40);
请注意,在前面的示例中,画笔的类型 SolidBrush,它继承自 Brush。
阴影画笔
使用阴影画笔填充形状时,可以指定前景色、背景色和阴影样式。 前景色是阴影的颜色。
HatchBrush myHatchBrush(
HatchStyleVertical,
Color(255, 0, 0, 255),
Color(255, 0, 255, 0));
GDI+ 提供 50 多种阴影样式,在 HatchStyle中指定。 下图中显示的三种样式是 Horizontal、ForwardDiagonal 和 Cross。
显示三个青色椭圆的插图
纹理画笔
使用纹理画笔,可以使用位图中存储的图案填充形状。 例如,假设下图存储在名为 MyTexture.bmp的磁盘文件中。
以下示例通过重复存储在 MyTexture.bmp中的图片来填充椭圆。
Image myImage(L"MyTexture.bmp");
TextureBrush myTextureBrush(&myImage);
myGraphics.FillEllipse(&myTextureBrush, 0, 0, 100, 50);
下图显示了填充的椭圆。
显示用以前定义的模式填充的椭圆的插图
渐变画笔
可以使用渐变画笔填充形状,其颜色逐渐从形状的一部分更改为另一部分。 例如,水平渐变画笔将在从图形左侧移动到右侧时更改颜色。 以下示例用水平渐变画笔填充椭圆,该画笔在从椭圆左侧移动到右侧时从蓝色变为绿色。
LinearGradientBrush myLinearGradientBrush(
myRect,
Color(255, 0, 0, 255),
Color(255, 0, 255, 0),
LinearGradientModeHorizontal);
myGraphics.FillEllipse(&myLinearGradientBrush, myRect);
下图显示了填充的椭圆。
显示带渐变填充的省略号的插图
可以将路径渐变画笔配置为在从图形中心移动到边界时更改颜色。
底纹到浅蓝色
路径渐变画笔相当灵活。 下图中用于填充三角形的渐变画笔逐渐从中心红色更改为顶点上三种不同颜色中的每一种。