动网论坛,站长建站首选,国内使用量最多的论坛软件 动网论坛官方技术讨论区 站长工具 申请属于您自己的免费论坛
首页 | 新闻资讯 | 网站运营 | 网络编程 | 数据库 | 服务器 | 网页设计 | 图像媒体 | 网络应用 | 搜索优化 | 资源下载 | 动网主机 | DVBOX
    本站内  互联网 ASP论坛  ASP.Net论坛  PHP论坛
   .Net → 阅读文章

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

作者来源: 
阅读 2206 人次 , 2006-4-25 15:02:00 

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

  画刷是具有颜色,图形或模式的对象,它用来填充图形内部,这种定义也意味着根据不同的目的有不同的画刷。为了满足这一目标,.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();
}

  
 
 收藏本文  打印本文  论坛讨论  关闭窗口
· 上一篇:在managed C++应用中使用ADO.NET
· 下一篇:Visual Studio 2005体验泛型编程
· 一个多文档界面的应用程序
· ADO.NET--什么是关系型数据库
· 细细品味ASP.NET(四)
· DataSet 物件
· 图片上传的数据库部分(自动生成所略图)


关于本站 | 联系我们 | 业务合作 | 客户案例 | 诚聘英才 | 广告合作 | 收藏本站
海口动网先锋网络科技有限公司版权所有
Copyright © 2000 - 2006 Cndw.Com
中华人民共和国电信与信息服务业务经营许可证编号 琼 ICP 020077