资源描述:
《vc++下贝济埃曲线的绘制》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、VC++下贝济埃曲线的绘制2007年8甩电脑学习第4期VC抖下贝济埃曲线的绘制苏百兖'杜永生一摘要:介绍用VC++绘制能移动的贝济埃曲线的方法.关键词:贝济埃曲线VC类工程中图分类号:TP3l1.11文献标识码B文章编号:1002—2422(2007)04-0008—02BezierCurveDrawinginVC++SuBa.y1111DuYongshengAbstract:ThepaperpresentsthemethodhowtouseVC++todrawmovableBezierCurve.K
2、eyword:BezierCurveVCClassProject1能移动的贝济埃曲线的功能贝济埃曲线是以法国数学家皮埃尔?贝济埃命名的,它首先描述了这种曲线的性质.在一条贝塞尔曲线上,两个中点称为控制柄的位置足以描述一条不平滑曲线的总体形状.在计算机图形应用程序中,用户操纵的控制柄通常在屏幕上显示为小框.用鼠标单击或牵引这些点,就可以控制曲线的复杂度和形状.在VC++生成的Windows窗口中,在你选定的四点上,单击鼠标四下,即立刻绘制出一条贝济埃曲线,如果你想调整该曲线,只要对准贝济埃曲线的四个折点
3、中的一个,按下鼠标右键,拖动鼠标到你需要的位置,贝济埃曲线亦随着移动,直到你满意为止.2VC++下绘制能移动的贝济埃曲线的步骤步骤1:启动VC++6.0,生成名为DrawBez的工程.选中File-"New菜单,单击Project标签,选择MFCAp.pWizard[exe],输入工程名DrawBez,在第一步中选择SingleDocument,其他各步都用默认设置,最后点击finsh,完成工程的建立;步骤2:在CDrawBezView类中添加如下数据成员:public:POINTBezierPoin
4、t[4]:intDotNo:intIndex;步骤3:在CDrawBezView类的构造函数CDrawBezView()中初始化DotNo=O;步骤4:在OnDraw函数中添加代码如下:voidCDrawBezView::OnDraw(CDCpDC)fCDrawBezDocpDoc=GetDocument0;ASSERT_VALID(pDoe);if(DotNo==4)fCPenpenl;CPenpen2;pen2=newCPen(PS_SOLID,1,RGB(255,0,0));ponl=newCP
5、en(PS_SOLID,I,RGB(0,0,255));CPen*oldpen;oldpen=pDC->SelectObject(pon1);for(inti:0I.<4扛++)(pDC->Ellipse(BezierPoint[i].x-2,BezierPoint[i].y-2,BezierPoint{i].x+2,BezierPoint[i].y+2);if(i>:1)fpDC->MoveTo(BezierPoint[i-1].x,BezierPoint[i-1].y
6、);pDC->LineTo(BezierPoint[i].x,BezierPoint[i].y);JJpDC->SelectObject(pen2);pDC->PolyBezier(BezierPoint.4);deletepenl;deletepon2;pDC->SelectObject(oldpen);JJ步骤5:用ClassWizard给CDmwBezView类分别添加鼠标左键单击,右键按下,鼠标拖动,右键抬起消息处理函数OnLButtonDown(),OnRButton
7、Down(),OnMouseMore(),OnRButtonUp():步骤6:给OnLButtonDown(),OnRButtonDown()On—MouseMove(),OnRButtonUp()函数中分别添加代码如下:voidCDrawBezView::OnLButtonDown(UINTnFlags,CPointpoint)fCClientDCpDC=newCClientDC(this);if(DotNo<4){BezierPoint[DotNo],x=point,x:BezierPoin
8、t[DotNo].y=point.y;if(DotNo>=1)fpDC->MoveTo(point.x,point,y);pDC->LineTo(BezierPoint[DotNo-1].x,BezierPoint[DotNo-1].y);JDotNo++;Jif(DotNo==4)Invalidate():deletepDC;CView::OnLButtonDown(nHags,pint);J苏百兖济宁职业技术学院计算机工程系助教(济