科技行者

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

知识库

知识库 安全导航

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

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

  • 扫一扫
    分享文章到微信

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

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

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

关键字: VC.NET GDI+ 编程 画刷

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

  画刷是具有颜色,图形或模式的对象,它用来填充图形内部,这种定义也意味着根据不同的目的有不同的画刷。为了满足这一目标,.NET框架在不同的名字空间中使用不同的类来支持画刷。所有画刷的基类是Brush类,它定义在System::Drawing名字空间中。

  一、使用画刷

  因为画刷的主要工作是填充封闭的图形,Graphics类为每一中图形都提供了一个填充方法。这些方法是:

  ·FillRectangle: 填充一个矩形或一个正方形;
  ·FillRectangle: 填充一系列的矩形;
  ·FillEllipse: 填充椭圆或圆
  ·FillPolygon: 填充多边形
  ·FillPie: 填充饼图
  ·FillPath:填充图形路径

  为了填写一个图形,调用上述的一个方法,给它传递一个刷子值,然后是图形的位置和尺寸,例如,如果想绘制一个矩形并用一个画刷来填充它,可以使用与下面相似的代码:

private: System::Void Form1_Paint(System::Object * sender,PaintEventArgs * e)
{
e->Graphics->FillRectangle(SomeBrush, 20, 20, 200, 160);
}

  总共有四种画刷。

  (一)实心画刷

  最简单的画刷就是实心的,这种画刷只提供了一种颜色,习惯于用它来填充一个区域。为了获得实心画刷,可以使用System.Drawing 名字空间中的SolidBrush类。它只有一个构造函数,语法如下:

public: SolidBrush(Color color);

  color参数必须是有效定义的颜色值,这里是一个例子:

private: System::Void Form1_Paint(System::Object * sender,
System::Windows::Forms::PaintEventArgs * e)
{
SolidBrush *brushBlue = new SolidBrush(Color::Blue);
e->Graphics->FillRectangle(brushBlue, 20, 20, 200, 160);
}


图一、代码运行效果图

  如果想用不同的颜色填充不同的图形,不必为每一个图形创建一个新的画刷,任何时候,在对一个已经定义的画刷进行重用之前,只需要简单地更改颜色,正式基于这个原因,SolidBrush类提供了颜色属性,例子代码如下:

private: System::Void Form1_Paint(System::Object * sender,
System::Windows::Forms::PaintEventArgs * e)
{
SolidBrush *colorizer = new SolidBrush(Color::Lime);
e->Graphics->FillRectangle(colorizer, 10, 10, 120, 120);
colorizer->Color = Color::Salmon;
e->Graphics->FillRectangle(colorizer, 140, 10, 120, 120);

colorizer->Color = Color::Aqua;
e->Graphics->FillRectangle(colorizer, 10, 140, 120, 120);

colorizer->Color = Color::Navy;
e->Graphics->FillRectangle(colorizer, 140, 140, 120, 120);
}


图二、代码运行效果图

  与在图形编程中使用的绝大部分对象一样,画刷消耗计算机的资源,所以,使用过它以后,需要调用 Dispose()方法来释放它使用的资源。例子代码如下:

private: System::Void Form1_Paint(System::Object * sender,
System::Windows::Forms::PaintEventArgs * e)
{
SolidBrush *colorizer = new SolidBrush(Color::Lime);
e->Graphics->FillRectangle(colorizer, 10, 10, 120, 120);

colorizer->Color = Color::Salmon;
e->Graphics->FillRectangle(colorizer, 140, 10, 120, 120);

colorizer->Color = Color::Aqua;
e->Graphics->FillRectangle(colorizer, 10, 140, 120, 120);

colorizer->Color = Color::Navy;
e->Graphics->FillRectangle(colorizer, 140, 140, 120, 120);

colorizer.Dispose();
}
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

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

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