课程设计 绘图板

课程设计 绘图板

ID:16168456

大小:162.00 KB

页数:34页

时间:2018-08-08

课程设计   绘图板_第1页
课程设计   绘图板_第2页
课程设计   绘图板_第3页
课程设计   绘图板_第4页
课程设计   绘图板_第5页
资源描述:

《课程设计 绘图板》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、课程设计绘图板一、设计要求:使用MFC编写一个具有绘制直线、椭圆、矩形、保存、打开、移动缩放、改变颜色、填充等基本功能并且有弹出式菜单和进度条以及状态栏鼠标表现和标题栏时间显示的绘图板。二、编写过程和方法:1、创建首先打开C++软件,新建MFCAppWizard[exe],创建单文档类型的应用程序,以CScrollView类为基类,其余选项保持其默认值不变。 2、建立主菜单选中ResourceView标签,在Menu目录下的IDR_MAINFRAME中建立新的菜单项,完成对其名称和函数的初始化,具体如图:在CMy08102102

2、11View中定义public变量COLORREFcolor、CPointptStart,CPointptEnd,CPenm_pen,intcurShape,intPenWidth,BOOLsolid,BOOLbLeftButtonDown。在构造函数中进行初始化:CMy0810210211View::CMy0810210211View(){//TODO:addconstructioncodeherePenWidth=1;m_pen.CreatePen(PS_SOLID,1,RGB(0,0,0));curShape=-1;}完善

3、菜单项对应函数功能,颜色以OnMenuBlue()为例:voidCMy0810210211View::OnMenuBlue(){//TODO:Addyourcommandhandlercodeherecolor=RGB(0,0,255);m_pen.DeleteObject();m_pen.CreatePen(PS_SOLID,PenWidth,color);}形状以OnMenuEllipse()为例:voidCMy0810210211View::OnMenuEllipse(){//TODO:Addyourcommandhand

4、lercodeherecurShape=2;Draw=true;}curShape值:直线对应0,矩形对应1voidCMy0810210211View::OnMenuSolid(){//TODO:Addyourcommandhandlercodeheresolid=TRUE;}OnMenuUnsolid()中solid=FALSEvoidCMy0810210211View::OnMenuThick(){//TODO:AddyourcommandhandlercodeherePenWidth=3;m_pen.DeleteObjec

5、t();m_pen.CreatePen(PS_SOLID,PenWidth,color);}细、中、粗分别对应PenWidth值为1、2、3BOOLCMy0810210211View::OnSetCursor(CWnd*pWnd,UINTnHitTest,UINTmessage){//TODO:Addyourmessagehandlercodehereand/orcalldefaultif(nHitTest==HTCLIENT){HCURSORm_myCursor;m_myCursor=AfxGetApp()->LoadStan

6、dardCursor(IDC_CROSS);SetCursor(m_myCursor);returntrue;}}使鼠标变成十字状1、实现基本绘图然后再在CMy0810210211View中添加OnLButtonDown,OnLButtonUp和OnMouseMove:voidCMy0810210211View::OnMouseMove(UINTnFlags,CPointpoint){//TODO:Addyourmessagehandlercodehereand/orcalldefaultCScrollView::OnMouse

7、Move(nFlags,point);CMy0810210211Doc*pDoc=GetDocument();CClientDCdc(this);使用ClientDC绘制图形if(this->bLeftButtonDown==1){if(Draw){if(curShape==1){dc.SelectObject(m_pen);传递颜色线宽等信息dc.SetROP2(R2_NOT);反显色dc.SelectStockObject(NULL_BRUSH);使图线不遮去原有背景dc.Rectangle(ptStart.x,ptStar

8、t.y,this->ptEnd.x,this->ptEnd.y);擦去痕迹dc.Rectangle(ptStart.x,ptStart.y,point.x,point.y);}elseif(curShape==2){dc.SetROP2(R2_NOT);dc.S

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。