(二)网格画刷
网格画刷根据已画或已设计的模式来设置它的填充类型。为了支持网格画刷,.NET框架提供了画刷可以使用的各种模式,这些预先设计的模式对应于网格画刷的类型。这意味着在使用网格画刷时,必须在可用的各种类型中选择想要使用的模式,为了使填充区域更生动,还需要说明所使用的颜色。
为了获取一个网格画刷,可以使用HatchBrush类,它的其中一个构造函数使用以下语法:
| public: HatchBrush(HatchStyle style, Color foreColor); | 参数foreColor是用来绘制模式的颜色,style参数是想使用的网格类型,一些可用的类型是:
private: System::Void Form1_Paint(System::Object * sender, System::Windows::Forms::PaintEventArgs * e) { using namespace System::Drawing::Drawing2D; HatchBrush *brushBackDiag = new HatchBrush(HatchStyle::BackwardDiagonal, Color::FromArgb(0, 0, 255)); HatchBrush *brushCross = new HatchBrush(HatchStyle::Cross, Color::FromArgb(200, 0, 0)); HatchBrush *brushDarkDown = new HatchBrush(HatchStyle::DarkDownwardDiagonal, Color::Salmon); HatchBrush *brushDarkHorz = new HatchBrush(HatchStyle::DarkHorizontal, Color::Navy); HatchBrush *brushDarkUpDiag = new HatchBrush(HatchStyle::DarkUpwardDiagonal, Color::Pink); HatchBrush *brushVertical = new HatchBrush(HatchStyle::DarkVertical, Color::FromArgb(255, 0, 255)); HatchBrush *brushDashDnDiag = new HatchBrush( HatchStyle::DashedDownwardDiagonal, Color::FromArgb(255, 128, 0)); HatchBrush *brushDashHorz = new HatchBrush(HatchStyle::DashedHorizontal, Color::FromArgb(0, 128, 192)); HatchBrush *brushDashUpDiag = new HatchBrush(HatchStyle::DashedUpwardDiagonal, Color::Green); HatchBrush *brushDashVert = new HatchBrush(HatchStyle::DashedVertical, Color::Firebrick); HatchBrush *brushDiagBrisk = new HatchBrush(HatchStyle::DiagonalBrick, Color::Fuchsia); HatchBrush *brushDiagCross = new HatchBrush(HatchStyle::DiagonalCross, Color::Moccasin); HatchBrush *brushDivot = new HatchBrush(HatchStyle::Divot, Color::Goldenrod); HatchBrush *brushDotDiamond = new HatchBrush(HatchStyle::DottedDiamond, Color::Gainsboro); HatchBrush *brushDottedGrid = new HatchBrush(HatchStyle::DottedGrid, Color::Khaki); HatchBrush *brushForDiag = new HatchBrush(HatchStyle::ForwardDiagonal, Color::Maroon); HatchBrush *brushHorz = new HatchBrush(HatchStyle::Horizontal, Color::Red); HatchBrush *brushHorzBrick = new HatchBrush(HatchStyle::HorizontalBrick, Color::SaddleBrown); HatchBrush *brushLgChkBoard = new HatchBrush(HatchStyle::LargeCheckerBoard, Color::RoyalBlue); HatchBrush *brushLgConfetti = new HatchBrush(HatchStyle::LargeConfetti, Color::MistyRose); HatchBrush *brushLgGrid = new HatchBrush(HatchStyle::LargeGrid, Color::Purple); HatchBrush *brushLtDnDiag = new HatchBrush( HatchStyle::LightDownwardDiagonal, Color::DarkCyan); HatchBrush *brushLtHorz = new HatchBrush(HatchStyle::LightHorizontal, Color::PowderBlue); HatchBrush *brushUpDiag = new HatchBrush( HatchStyle::LightUpwardDiagonal, Color::SeaGreen); HatchBrush *brushLtVert = new HatchBrush(HatchStyle::LightVertical, Color::Olive); e->Graphics->FillRectangle(brushBackDiag, 20, 20, 80, 60); e->Graphics->FillRectangle(brushCross, 120, 20, 80, 60); e->Graphics->FillRectangle(brushDarkDown, 220, 20, 80, 60); e->Graphics->FillRectangle(brushDarkHorz, 320, 20, 80, 60); e->Graphics->FillRectangle(brushDarkUpDiag, 420, 20, 80, 60);
e->Graphics->FillRectangle(brushVertical, 20, 100, 80, 60); e->Graphics->FillRectangle(brushDashDnDiag, 120, 100, 80, 60); e->Graphics->FillRectangle(brushDashHorz, 220, 100, 80, 60); e->Graphics->FillRectangle(brushDashUpDiag, 320, 100, 80, 60); e->Graphics->FillRectangle(brushDashVert, 420, 100, 80, 60);
e->Graphics->FillRectangle(brushDashVert, 20, 180, 80, 60); e->Graphics->FillRectangle(brushDiagBrisk, 120, 180, 80, 60); e->Graphics->FillRectangle(brushDiagCross, 220, 180, 80, 60); e->Graphics->FillRectangle(brushDivot, 320, 180, 80, 60); e->Graphics->FillRectangle(brushDotDiamond, 420, 180, 80, 60);
e->Graphics->FillRectangle(brushDottedGrid, 20, 260, 80, 60); e->Graphics->FillRectangle(brushForDiag, 120, 260, 80, 60); e->Graphics->FillRectangle(brushHorz, 220, 260, 80, 60); e->Graphics->FillRectangle(brushHorzBrick, 320, 260, 80, 60); e->Graphics->FillRectangle(brushLgChkBoard, 420, 260, 80, 60);
e->Graphics->FillRectangle(brushLgGrid, 20, 340, 80, 60); e->Graphics->FillRectangle(brushLtDnDiag, 120, 340, 80, 60); e->Graphics->FillRectangle(brushLtHorz, 220, 340, 80, 60); e->Graphics->FillRectangle(brushUpDiag, 320, 340, 80, 60); e->Graphics->FillRectangle(brushLtVert, 420, 340, 80, 60); } |
 图三、各种网络格画刷效果图 | 如果使用上面的构造函数来填充一个图形,选择的模式将绘制在黑色背景上,如果想使用不同的背景,使用下面的构造函数来初始化画刷。
| public: HatchBrush(HatchStyle hatchstyle, Color foreColor, Color backColor); | 参数backColor是将用于背景的颜色。
任何时候,为了得到绘制模式的颜色,可以操作画刷的ForegroundColor属性;为了了解背景颜色,可以操作画刷的BackgroundColor属性;为了知道当前画刷的类型,可以操作它的HatchStyle类型。
|
|