,VC.net   工具软件   办公软件   操作系统   网络安全   设计在线   程序开发   教程宝典   软件下载   软件论坛,VC.net
您的位置:软件 > 开发者网络 > 微软开发专栏 > Visual Studio.net专栏 > VC.net > 正文
基于VC.NET的GDI+编程入门之画刷
[文章信息]
作者:刘涛
时间:2005-04-19
出处:天极网
责任编辑:方舟
[文章导读]
基于线条的、封闭的图形需要画笔来表现,封闭的形状的典型的特点在于它可以用图形、颜色或模式来填充
advertisement
热点推荐
· VB实现SQL Server 2000存储过程调用
· Java解析网络数据流的三种特殊方法
· 多媒体教程:网页表单文本域类型
· 体验V5E地形编辑:整体控制
· 打造完美可随意安装的WinXP镜像
[正文]

上一页  1 2 3 4  

  (四)渐变画刷

  渐变画刷类似与实心画刷,因为它也是基于颜色的,与实心画刷不同的是,渐变画刷使用两种颜色,它的主要特点是,在使用过程中,一种颜色在一端,而另外一种颜色在另一端。在中间,两种颜色融合产生过渡或衰减的效果。

  渐变画刷有两种:线性画刷和路径画刷

  1、线性渐变画刷
 
  线性渐变画刷在封闭的区域内的两端使用两种颜色,如左端和右端。

  为了支持线性渐变画刷,.NET框架在名字空间System::Drawing::Drawing2D 中对LinearGradientBrush类进行了定义,为了规定填充图形的起点和终点,可以使用下面的构造函数:

public: LinearGradientBrush(Point point1, Point point2, Color color1, Color color2);
public: LinearGradientBrush(PointF point1, PointF point2, Color color1, Color color2);

  第一个参数point1是绘制的起点,第三个参数color1是对应该点的颜色,第二个参数point2对应着绘制的终点,color2是该点的颜色。例子代码如下:

private: System::Void Form1_Paint(System::Object * sender,
System::Windows::Forms::PaintEventArgs * e)
{
using namespace System::Drawing::Drawing2D;
LinearGradientBrush *lgb = new LinearGradientBrush(Point(20, 20),
Point(450,20), Color::DarkGreen, Color::LightBlue);
e->Graphics->FillRectangle(lgb, 20, 20, 430, 180);
}


图十一、线性渐变画刷效果

  默认情况下,渐变画刷按照水平渐变的方式填充图形,如果想让颜色按照不同的方向渐变,如垂直或对角线方向,可以使用下面的构造函数:

public: LinearGradientBrush(Rectangle rect, Color color1, Color color2,
LinearGradientMode factor);
public: LinearGradientBrush(RectangleF rect, Color color1, Color color2,
LinearGradientMode factor);

  第一个参数rect是所要填充颜色的矩形,第二个参数是起点的颜色,第三个参数是终点的颜色,第四个参数factor用来决定颜色融合的方向。它可以取以下值:

  Vertical:垂直方向渐变:

private: System::Void Form1_Paint(System::Object * sender,
System::Windows::Forms::PaintEventArgs * e)
{
using namespace System::Drawing::Drawing2D;
Rectangle rect(10, 10, 470, 300);
LinearGradientBrush *lgb = new LinearGradientBrush(rect,
Color::DarkRed,Color::White, LinearGradientMode::Vertical);
e->Graphics->FillRectangle(lgb, 10, 10, 450, 280);
}


图十二、代码运行效果图

  Horizontal:水平渐变; BackwardDiagonal:反向对角线渐变; ForwardDiagonal:正向对角线渐变。

  用来指定渐变方向的构造函数有局限性,它只有四个选项,如果需要,可以使用下面的构造函数来指定任意角度的渐变。

public: LinearGradientBrush(Rectangle rect, Color color1, Color color2, float angle);
public: LinearGradientBrush(RectangleF rect, Color color1, Color color2, float angle);

  第一个参数rect指的是所要画颜色的区域,最后一个参数angle(按顺时针方向计算),定义了颜色融合的方向。参数color1是开始点的颜色,参数color2是终点的颜色。这里有个例子:

private: System::Void Form1_Paint(System::Object * sender,
System::Windows::Forms::PaintEventArgs * e)
{
using namespace System::Drawing::Drawing2D;
Rectangle rect(10, 10, 470, 300);
LinearGradientBrush *lgb = new LinearGradientBrush(rect,
Color::DarkRed, Color::White, -65.24F);
e->Graphics->FillRectangle(lgb, 10, 10, 450, 280);
}


图十三、代码运行效果图

  2、路径渐变画刷

  第二种可用的渐变画刷就是路径渐变画刷,这种画刷用在路径上,来产生渐变效果。.NET 框架在System.Drawing.Drawing2D名字空间中提供了 PathGradientBrush,这个类比有两个构造函数:

public: PathGradientBrush(Point points[]);
public: PathGradientBrush(PointF points[]);

  传递给这个构造函数的参数是Point类型的数组,这里有一个例子:

private: System::Void Form1_Paint(System::Object * sender,
System::Windows::Forms::PaintEventArgs * e)
{
using namespace System::Drawing::Drawing2D;
Point ptGraph[] = { Point(10, 10),
Point(450, 10),
Point(450, 250),
Point(10, 250) };
PathGradientBrush *pgb = new PathGradientBrush(ptGraph);
e->Graphics->FillRectangle(pgb, 10, 10, 450, 280);
}


图十四、代码运行效果图

上一页  1 2 3 4  

发表评论推荐给朋友我想参加相关培训打印我对此感兴趣订阅电子杂志
天极社区邀请您:写博客日记  上传相片   论坛聊天  订阅电子杂志  推荐网摘   免费图铃工具
笔名:   请您注意:

 遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。

 天极网拥有管理笔名和留言的一切权利。
评论:
 
,VC.net相关内容,VC.net焦点新闻
  • VC++2005快速构建安全的应用程序
  • 完美的C++:C++/CLI
  • 体验Visual Studio 2005中C++语言
  • 超越C++:下一代C++——C++/CLI简介
  • Visual C++ 2005中混合代码的初始化
  • FVD刺激高清碟机加速商业化 抢占商机最重要
  • 3家搜索引擎集体诉讼8848 吕春维未敢出席
  • 杨元庆:没有准备不会获批的备用方案
  • 军队信息化诞生新领域 电子军务呼之欲出
  • 世界经济论坛公布信息化程度全球最新排名
  • 2004政务绩效评估:政府门户尚处于发展阶段
  • 甲骨文出资5.15亿美元 意图收购RetekInc
  • 技术并购:帮你突破传统增长的“天花板”
  • ,VC.netAdvertisement