VC++MFC编程3

上传人:fgh****35 文档编号:246588100 上传时间:2024-10-14 格式:PPT 页数:12 大小:193.50KB
返回 下载 相关 举报
VC++MFC编程3_第1页
第1页 / 共12页
VC++MFC编程3_第2页
第2页 / 共12页
VC++MFC编程3_第3页
第3页 / 共12页
点击查看更多>>
资源描述
*,*,单击此处编辑母版标题样式,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,鼠标橡皮筋技术画圆,鼠标橡皮筋技术画圆就是采用圆心和圆周上任一点画圆技术(简称,C+P,方法),首先用鼠标左击选择圆心位置,然后移动鼠标,圆随鼠标移动而扩大或缩小,当再次单击鼠标左键时,确定圆周上的一点,从而画出相应的圆。直线、矩形等基本图形都可以采用橡皮筋技术。,第一步:建立,MouseSpring,工程文件;,第二步:向视图类中添加自定义的成员变量,用鼠标右键单击视图类,选择“,Add Member Variable”,添加下面三个成员变量。,proctected,:,CPoint,m_bO,; /,圆心,CPoint,m_bR,; /,圆上的点,int,m_ist,; /,圆心与圆周上点的区别,,m_ist,=0,,表示鼠标左击点为圆心,,/,m_ist,=1,,表示鼠标左击点为圆周上的点,操作方法如下图所示,分别添加上述三个成员变量。,第三步:向视图类中添加自定义的成员函数原型:,public:,void,DrawCircle(CDC,*,pDC,CPoint,cenp,CPoint,ardp,);,int,ComputeRadius(CPoint,cenp,CPoint,ardp,);,具体操作方法:用鼠标右键单击视图类,选择“,Add Member Function”,,如下图所示。分别添加上述两个成员函数,分别用于画圆和计算圆的半径。,第四步:在视图类,CPP,文件的构造函数中初始化成员变量。,视图类的构造函数名与该视图类的名字相同。在视图类中选择构造函数,如:,CMouseSpringView,(),,用鼠标左键双击,输入下面程序代码:,CMouseSpringView,:,CMouseSpringView,(),/TODO: add construction code here,m_bO.x,=0;,m_bO.y,=0; /,圆心,m_bR.x,=0;,m_bR.y,=0; /,圆上的点,m_ist,=0; /,圆心与圆上的点区别,第五步:在视图类的,OnDraw,(),函数中加入下列代码,实现视图绘图。,void,CMouseSpringView:OnDraw(CDC,*,pDC,),CMouseSpringDoc,*,pDoc,=,GetDocument,();,ASSERT_VALID(pDoc,);,/ TODO: add draw code for native data here,pDC,-,SelectStockObject(NULL_BRUSH,);/,选择预定义对象,DrawCircle(pDC,m_bO,m_bR,);,/,调用自定义的成员函数画圆,第六步:向视图类中添加两个鼠标消息响应函数,并输入鼠标处理程序代码。一个是,OnLButtonDown,(),函数,另一个是,OnMouseMove,(),函数。程序如下:,void,CMouseSpringView:OnLButtonDown(UINT,nFlags,CPoint,point),/ TODO: Add your message handler code here and/or call default,CDC *,pDC,=,GetDC,();,pDC,-,SelectStockObject(NULL_BRUSH,);,if (!,m_ist,) /,绘制圆,m_bO,=,m_bR,=point; /,纪录第一次单击鼠标位置,定圆心,m_ist,+;,else,m_bR,=point; /,记录第二次单击鼠标的位置,定圆周上的点,m_ist,-; /,为新绘图作准备,DrawCircle(pDC,m_bO,m_bR,); /,绘制新圆,ReleaseDC(pDC,); /,释放设备环境,CView:OnLButtonDown(nFlags, point);,void,CMouseSpringView:OnMouseMove(UINT,nFlags,CPoint,point),/ TODO: Add your message handler code here and/or call default,CDC *,pDC,=,GetDC,();,int,nDrawmode,=,pDC,-SetROP2(R2_NOT); /,设置异或绘图模式,并保存原来绘图模式,pDC,-,SelectStockObject(NULL_BRUSH,);,if(m_ist,=1),CPoint,prePnt,curPnt,;,prePnt,=,m_bR,; /,获得鼠标所在的前一位置,curPnt,=point;,/,绘制橡皮筋线,DrawCircle(pDC,m_bO,prePnt,); /,用异或模式重复画圆,擦出所画的圆,DrawCircle(pDC,m_bO,curPnt,); /,用当前位置作为圆周上的点画圆,m_bR,=point;,pDC,-SetROP2(nDrawmode); /,恢复原绘图模式,ReleaseDC(pDC,); /,释放设备环境,CView:OnMouseMove(nFlags, point);,第七步:分别为成员函数,DrawCircle,(),和,ComputeRadius,(),添加程序代码,程序如下:,void,CMouseSpringView:DrawCircle(CDC,*,pDC,CPoint,cenp,CPoint,ardp,),int,radius=,ComputeRadius(cenp,ardp,);,/,由圆心确定所画圆的外切区域,CRect,rc(cenp.x-radius,cenp.y-radius,cenp.x+radius,cenp.y+radius,);,pDC,-,Ellipse(rc,); /,画出一个整圆,int,CMouseSpringView:ComputeRadius(CPoint,cenp,CPoint,ardp,),int,dx,=,cenp.x-ardp.x,;,int,dy,=,cenp.y-ardp.y,;,/,sqrt,(),函数的调用,在头文件中加入,#include ,math.h,return (,int)sqrt(dx,*,dx+dy,*,dy,);,第八步:编译运行程序,验证运行结果。,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 机械制造 > 工业自动化


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!