科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件基于VC.NET的GDI+编程入门之画刷

基于VC.NET的GDI+编程入门之画刷

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

基于线条的、封闭的图形需要画笔来表现,封闭的形状的典型的特点在于它可以用图形、颜色或模式来填充。

作者:coffer编译 来源:VCKBASE 2007年11月16日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
(二)网格画刷

  网格画刷根据已画或已设计的模式来设置它的填充类型。为了支持网格画刷,.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类型。
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章