你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:文章管理 / 本期精品文章
如何在VC 6.0下实现贝济埃曲线的绘制
 

苏百兖

贝济埃曲线是以法国数学家皮埃尔·贝济埃命名的,它首先描述了这种曲线的性质。在一条贝塞尔曲线上,两个中点控制柄的位置足以描述一条不平滑曲线的总体形状。在计算机图形应用程序中,用户操纵的控制柄通常在屏幕上显示为小框。用鼠标单击或牵引这些点就可以控制曲线的复杂度和形状。

VC++生成的Windows窗口中,单击鼠标四下,即立刻绘制出一条贝济埃曲线。如果想调整该曲线,只要对准贝济埃曲线的四个折点中的一个,按下鼠标右键,拖动鼠标到你需要的位置,贝济埃曲线亦随着移动,直到满意为止。下面介绍VC++下绘制能移动的贝济埃曲线的步骤:

步骤1.启动VC++6.0,生成名为DrawBez的工程。选中FileNew菜单,单击Project标签,选择MFC AppWizard[exe],输入工程名DrawBez,在第一步中选择Single Document,其他各步都用默认设置,最后点击finsh,完成工程的建立。

步骤2.CDrawBezView类中添加如下数据成员:

                   public:  POINT BezierPoint[4];

                           int DotNo;

                           int Index;

步骤3.CDrawBezView类的构造函数CDrawBezView()中初始化DotNo=0

步骤4.OnDraw函数中添加如下代码:

void CDrawBezView::OnDraw(CDC* pDC)

{

   CDrawBezDoc* pDoc = GetDocument();

   ASSERT_VALID(pDoc);

       if(DotNo==4)

       {

          CPen* pen1;

CPen* pen2;

          pen2=new CPen(PS_SOLID,1,RGB(255,0,0));

pen1=new CPen(PS_SOLID,1,RGB(0,0,255));

          CPen* oldpen;

          oldpen=pDC->SelectObject(pen1);

          for(int i=0;i<4;i++)

       {

pDC->Ellipse(BezierPoint[i].x-2,BezierPoint[i].y-2,BezierPoint[i].x+2,BezierPoint[i].y+2);

          if(i>=1)

       {

         pDC->MoveTo(BezierPoint[i-1].x,BezierPoint[i-1].y);

         pDC->LineTo(BezierPoint[i].x,BezierPoint[i].y);

          

       }

       }

          pDC->SelectObject(pen2);

          pDC->PolyBezier(BezierPoint,4);

          delete pen1;

          delete pen2;

          pDC->SelectObject(oldpen);

       }                                   

}
  推荐精品文章

·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录
·2023年10月目录
·2023年9月目录 
·2023年8月目录 
·2023年7月目录
·2023年6月目录 
·2023年5月目录

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089