,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 5 6 7 8  下一页

  二、贝赛尔曲线

  贝赛尔曲线是用四个点(不必在一条直线上)绘制的连续曲线,它可以用下图来说明:


图二十四、贝赛尔曲线

  为了绘制这个线条(使用四个点),编译器将从第一点到第四个点画一条曲线,但是它并不经过第二、第三个点,而只是通过弯曲曲线来使中间的侧边各自接近于第二、第三个点。例如,上述的贝赛尔曲线使用了如下的四个点进行绘制:


图二十五、贝赛尔曲线绘制说明图

  为了绘制贝赛尔曲线,Graphics类提供了DrawBezier()方法,它重载了以下版本:

public: void DrawBezier(Pen *pen, Point pt1, Point pt2, Point pt3, Point pt4);
public: void DrawBezier(Pen *pen, PointF pt1, PointF pt2, PointF pt3, PointF pt4);
public: void DrawBezier(Pen *pen, float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4);

  在此基础上,绘制贝赛尔曲线时可以使用四个Point 或PointF值,也可以使用四个点的坐标值。下面有一个例子:

private: System::Void Form1_Paint(System::Object * sender,
System::Windows::Forms::PaintEventArgs * e)
{
 Pen *penCurrent = new Pen(Color::Blue);
 Point pt1 = Point(20, 12), pt2 = Point(88, 246), pt3 = Point(364, 192), pt4 = Point(250, 48);
 e->Graphics->DrawBezier(penCurrent, pt1, pt2, pt3, pt4);
}

  效果图如下:


图二十六、贝赛尔曲线效果图

  三、一系列贝赛尔曲线

  Graphics::DrawBezier()方法用来绘制一条贝赛尔曲线,如果想绘制一系列贝赛尔曲线,可以用Graphics::DrawBeziers()方法,它重载了两个版本:

public: void DrawBeziers(Pen *pen, Point points[]);
public: void DrawBeziers(Pen *pen, PointF points[]);

  DrawBeziers()方法需要一个Point 或 PointF数组值。当仅仅处理四个点时,DrawBeziers() 方法与 DrawBezier()很相似。区别是DrawBezier()处理的是四个Point 或 PointF的值,DrawBeziers()处理的是Point 或 PointF数组值。使用DrawBeziers()方法可以绘制出与上面曲线一样的效果,代码如下:

private: System::Void Form1_Paint(System::Object * sender,
System::Windows::Forms::PaintEventArgs * e)
{
 Pen *penCurrent = new Pen(Color::Blue);
 Point pt[] = { Point(20, 12), Point(88, 246), Point(364, 192), Point(250, 48) };
 e->Graphics->DrawBeziers(penCurrent, pt);
}

  使用DrawBeziers()方法的一个典型特点是它允许使用7个Point或PointF值,这里有一个例子:

private: System::Void Form1_Paint(System::Object * sender,
System::Windows::Forms::PaintEventArgs * e)
{
 Pen *penCurrent = new Pen(Color::Blue);
 Point pt[] = { Point( 10, 5), Point(340, 60), Point(320, 148), Point(150, 120), Point(24, 220), Point(250, 150), Point(304, 240) };
 e->Graphics->DrawBeziers(penCurrent, pt);
}

  效果图如下:


图二十七、代码运行效果图


上一页  1 2 3 4 5 6 7 8  下一页

发表评论推荐给朋友我想参加相关培训打印我对此感兴趣订阅电子杂志
,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