ImageVerifierCode 换一换
格式:DOC , 页数:24 ,大小:825.33KB ,
资源ID:824838      下载积分:20 积分
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 微信支付   
验证码:   换一换

加入VIP,免费下载资源
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【http://www.wodocx.com/d-824838.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C++面向对象课程设计报告之二维平面设计画图.doc)为本站会员(精***)主动上传,沃文网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知沃文网(发送邮件至2622162128@qq.com或直接QQ联系客服),我们立即给予删除!

C++面向对象课程设计报告之二维平面设计画图.doc

1、C+面向对象课程设计报告院(系): 计算机工程学院 专业: 软件工程 学生姓名: 班级: 学号 题目: 二维平面画图 起迄日期: 2011.7.4至2011.7.15 设计地点: 指 导 教 师: 完成日期: 2011 年 7月 15日目录一、课程设计目的1二、课程设计内容与实现的功能2三、系统分析与设计21、系统分析22、系统设计:22.1、系统设计方案2概要设计2详细设计2基本信息的设计3点样式的设计3菜单的设计3橡皮筋功能的实现3窗口的重绘、图形的打开和保存42.2、数据结构说明:42.3、算法流程图:4四、系统测试与调试分析61、系统测试62、调试分析:7五、用户手册8六、程序清单13

2、七、体会与自我评价22八、参考文献23九、课程设计评价23一、课程设计目的进行C+面向对象程序设计课程设计主要是在学习C+这门面向对象语言的基础上,在完成C+面向对象程序设计各部分实验的基础上,通过自学MFC,掌握一种可视化编程的方法,并通过实践加深对可视化编程与C+面向对象程序设计语言特点的认识与理解。同时,可以提高运用C+编程语言解决实际问题的能力;锻炼实际的编程能力、创新能力及团队组织、协作开发软件的能力;还能提高调查研究、查阅技术文献、资料以及编写软件设计文档的能力。二、课程设计内容与实现的功能二维平面图形设计:可通过菜单或者工具栏按钮,选择绘画工具,画不同的平面图形(直线、圆弧、矩形

3、、圆角矩形、圆、椭圆等);可通过颜色对话框选择不同的颜色,使所画的图形具有不同颜色;可保存文档所画的图形,并能打开该图形。三、系统分析与设计1、系统分析二维平面图形设计主要是设计出能进行常见的图形的绘制(如直线、圆弧、矩形、圆角矩形、圆、椭圆等);通过用户的需求或者选择进行绘制用户想要的图形,绘制的图形的种类可以放置在菜单栏或工具栏,当然用户的所有图形都是在客户区内进行的,而绘制的过程一般都是通过单击,鼠标的拖曳来完成的,而每一种绘制的图形都是都要与鼠标的单击、拖曳相关联,即每一种绘制的图都是鼠标单击、拖曳的一个分支,每个菜单就是这些分支的标记。在系统分析阶段,系统的逻辑结构应从以下三方面全面

4、反映系统的功能与性能: (1)信息系统要处理的信息主要有:点、点的样式、线宽、线型、线的颜色、绘制的图形的种类。 每一种图形的绘制都是同点来完成的,一个或者是多个,比如直线两点就确定一条直线,矩形知道一个角点和长宽能确定,圆知道原点和半径即可每一种图形的绘制都有线的特征,即线的颜色、宽度、类型(是实线、点线还是虚线或是其他,因为每一次鼠标的单击或拖曳只能绘制一种图形,所有要有区别绘图种类的标记。(2)行为鼠标的单击、拖曳通过用户所选的绘制的不同图形绘、线的特性绘制不同的图形。(3)表示系统的对外接口主要有能绘制的图形的种类和对绘制图形前的对图形的基本信息的设置。图形的种类有“直线”、“圆弧”、

5、“矩形”、“圆角矩形”、“圆”、“椭圆”等,设置有点样式的设置点样式,对线的设置有“线型”、“线宽”、“颜色”2、系统设计:2.1、系统设计方案概要设计因为图形的绘制都是通过图形的基本信息,在通过调用相关的函数数所完成的,有以图形的打开和保存都与图形的基本信息有关,也就是说图形的打开就是通过获得相应的图形的基本信息,在调用图形的绘制的方法就能准确将图形重新显示出来,图形的保存就是将图形的基本信息保存到指定的文件中即可,所以,处理好图形的基本信息,就能够很好的把系统设计好。详细设计基本信息的设计正如前面所考虑的,图形的基本信息既然那么重要,说先就要设计好图形基本信息的存储,经过自己精心的设计,我

6、考虑了数据能够处理起来比较方便,所以,我考虑到了C+的继承性和多态性,就是说不通的对象调用相同的方法,产生不通的响应,这正好和我们图形的绘制过程完全一致,当然这个是在窗口重绘和打开图形对图形的绘制的时候,在图形的绘制过程,当让是有对鼠标按下,移动和鼠标弹起的消息的响应函数来响应,首先,设计一个基本信息数据的基类BaseData,其中有三个共有的数据成员color、linest、linew分别表示线条的颜色、线型、线宽,因为这是绘制每种图形的公共部分;基类还有一个Draw()方法,其类型是虚函数,用以实现多态。接下来的每种图形都是一个类且都从基类派生出来的,点类Dot,数据成员dotst,pt分

7、别表示点样式和点的位置,Dot类也有自己的Draw()方法,其作用按照点样式绘制一个点;直线类Line也有自己的数据成员stpt,endpt,分别表示直线的起点和终点,Line类也有自己的Draw(0方法,作用是绘制一条直线;矩形类Retangle1,其数据成员是确定其矩形区域的两个点,也设置成为stpt,endpt,其自己的Draw()方法是绘制一个矩形,椭圆类Ellipse1,它也有自己的数据成员,即能确定一个椭圆的两个点,也设置成为stpt,endpt,其Draw()方法是绘制一个椭圆如果我们要添加绘制其它图形的话,我们还可以添加更多的图形类。点样式的设计接下来是设计点样式,我们知道,但

8、我们画一个点的时候,我们为了突出其位置,我们需要不同样式的点,如圆点、十字点,一个小圆圈和圆心。当然,我们在话一个圆点的时候,我们一般都要画大一些,这几要求我们在画点的时候,应该画该点位置和其相邻位置的点,十字点其实实现很简单,就是在水平和竖直四个方向画四条小直线,圈点的话就是点和圆的组合。菜单的设计接下来的说就是菜单了,菜单我们可以分为绘图和设置这两个选项,绘图菜单里面有该系统能绘制的图形的选项,而设置选项里面主要有绘图的基本信息的设置,有点样式的的设置,线颜色的设置,线型,线宽的设置,后两者的设置可以用对话框实现,即CColorDialog和普通的对话框,在关联一些变量用来保存所设置的值。

9、橡皮筋功能的实现当我们在绘制图形的时候,我们移动鼠标还没放的时候,往往希望能看到绘制的图形的效果,这就橡皮筋功能,要实现橡皮筋功能,我选择的是重画三次图形的办法,就是说每个鼠标移动的点的轨迹作为终点(除终点外)都以原点作为起点绘制同样的图形,其原理是采用画笔与背景异或的模式画图(负负得正)。有人会疑惑,因为前面的的所有点都画了两次,二只有终点画一次,照此应该达到目的了。确实能够达到目的,但是在这样的模式下画的图形在线条相交得时候是不是也像是画两次的情形呢,这样交点处就变成了看不见了。为了解决这个问题,我的办法是进行第三次画图,起点和终点的画图,采用的是正常的模式画图。这样交点的地方就不会看不见

10、了。窗口的重绘、图形的打开和保存图形的打开和保存的关键是把图形的基本信息读取和保存,用MFC里面的CPtrArray数组进行保存,把包存储图形信息的个种对象的指针保存CPtrArray的对象中,然后在把CPtrArray的对象中的数据输出到指定的文件中,打开则是从保存相关数据的文件读入数据,放入CPtrArray的对象中,然后再用个for循环,调用各自的图形绘制的Draw()方法将图形一个个的绘制出来。窗口的重绘和图形打开类似,只不过图形的信息已经存储在CPtrArray的对象中,不用再从文件中读取然后再进行绘制。2.2、数据结构说明:本系统用到的数据结构有数组用来存储图形的基本信息数据字符串

11、一些控件相关的变量,用来存储用户选择的基本信息。2.3、算法流程图:因为本人的水平有限,本程序没有什么算法流程图类图(下面类图是有VS2010生成的类图,由于时间关系(还要考试),我没有按照要求画Visio图)四、系统测试与调试分析1、系统测试测试说明测试名称二维平面画图测试目的测试系统的功能测试技术单元测试、功能测试测试方法黑盒测试法测试用例测试内容绘制系统所实现的图形测试步骤选择不同的图形,设置不同的图形基本信息观察所绘制的图形看看是否达到所预期所设计的效果出现错误,查找错误,改正错误,再次测试测试数据用户的各种图形绘制预期结果实现绘图功能部分功能没有实现没有实现绘图功能测试结果与预期相符

12、与预期不相符与预期不相符2、调试分析:状态栏显示时间的调试,出现的错误,没有按照预期在状态栏的相应地方显示时间,当拖动窗口的时候,显示时间,之后有不显示。原因:没有进行状态栏的刷新,由于使用了CStatusBar 的成员函数SetPaneText的时候必须添加UI update handler,MSDN的说明:After you call SetPaneText, you must add a UI update handler to display the new text in the status bar.Example/Sets and displays text for pane i

13、ndex 3 and id ID_INDICATOR_SCRL m_wndStatusBar.SetPaneText(3, _T(My New Status Bar Text), TRUE);/UI handler in the message map updates the status bar text: ON_UPDATE_COMMAND_UI(ID_INDICATOR_SCRL, &CMainFrame:OnUpdatePane)void CMainFrame:OnUpdatePane(CCmdUI* pCmdUI) pCmdUI-Enable(); 在实现橡皮筋的功能时,开始时不知道

14、怎么弄,到后来在网上看到用求反,画两次的方法来实现,我就试试,对函数CDC:SetROP2调用,为了更加的了解这个函数,我把其中的每一中nDrawMode都试了一下,随后的图形绘制的过程中,我有发现但线条相交的地方都没有线条。解决用正常的模式把最后确定的线条再画一次,也就是前面所讲的三次画线实现橡皮筋功能。在编程过程中,常常因为某个对象是局部变量而我们所用的这个变量所保存的信息在其他地方还要用到,当函数的调用完即对象的生面周期的时候就会析构,调试的时候系统就会发出警告程序终止。所以,在MFC的编程当中,变量的生命周期很重要,充分的把握变量的生命周期,我们的程序将少出现debug五、用户手册1、

15、使用xp windows 平台2、不需要安装3、使用说明:双击应用程序出现下面的启动画面(两秒钟):之后出现画图的窗口: 单击“绘图”,选择想要绘制的图形,截图如下: 选择不同的图形绘制:设置不同的点样式进行绘图:设置不同的颜色,线型,线宽进行绘图:六、程序清单存储各种图形的类的Draw方法void Dot:Draw(CDC *dc) /绘制点的方法CPen pen(linest,linew,color);dc-SelectObject(pen);switch(dotst)case 1:/绘制点点样式的点dc-SetPixel(pt.x+1,pt.y,color);dc-SetPixel(pt

16、.x-1,pt.y,color);dc-SetPixel(pt.x-1,pt.y-1,color);dc-SetPixel(pt.x,pt.y+1,color);dc-SetPixel(pt.x-1,pt.y+1,color);dc-SetPixel(pt.x,pt.y-1,color);dc-SetPixel(pt.x+1,pt.y-1,color);dc-SetPixel(pt.x,pt.y,color);dc-SetPixel(pt.x+1,pt.y+1,color);break;case 2:/绘制十字点样式的点dc-MoveTo(pt.x-5,pt.y);dc-LineTo(pt.x

17、+5,pt.y);dc-MoveTo(pt.x,pt.y-5);dc-LineTo(pt.x,pt.y+5);break;case 3:/绘制圈点dc-SetPixel(pt,color);dc-SelectStockObject(NULL_BRUSH);dc-SelectObject(pen);dc-Ellipse(pt.x-5,pt.y-5,pt.x+5,pt.y+5);dc-SetPixel(pt,color);break;void Line:Draw(CDC *dc) /绘制直线的方法CPen pen(linest,linew,color);dc-SelectObject(pen);d

18、c-MoveTo(stpt);dc-LineTo(endpt);void Retangle1:Draw(CDC *dc)/绘矩形的方法CPen pen(linest,linew,color);dc-SelectObject(pen);dc-SelectStockObject(NULL_BRUSH);dc-Rectangle(CRect(stpt,endpt);void Ellipse1:Draw(CDC *dc)/绘制椭圆的方法CPen pen(linest,linew,color);dc-SelectObject(pen);dc-Ellipse(CRect(stpt,endpt);int C

19、MainFrame:OnCreate(LPCREATESTRUCT lpCreateStruct)if (CFrameWnd:OnCreate(lpCreateStruct) = -1)return -1;if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) |!m_wndToolBar.LoadToolBar(IDR_MAINFRAME)TRACE0(Faile

20、d to create toolbarn);return -1; / fail to createif (!m_wndStatusBar.Create(this) |!m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT)TRACE0(Failed to create status barn);return -1; / fail to create/ TODO: Delete these three lines if you dont want the toolbar to/ be dockablem_w

21、ndToolBar.EnableDocking(CBRS_ALIGN_ANY);EnableDocking(CBRS_ALIGN_ANY);DockControlBar(&m_wndToolBar);CSplashWnd:ShowSplashScreen(this);/加载自己的图标位图m_hicons0=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_ICON1);m_hicons1=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_ICON2);m_hicons2=LoadIcon

22、(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_ICON3);m_hicons3=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_ICON4);m_hicons4=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_ICON5);m_hicons5=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_ICON6);m_hicons6=LoadIcon(AfxGetInstanceHandle(),

23、MAKEINTRESOURCE(IDI_ICON7);m_hicons7=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_ICON8);m_hicons8=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_ICON9);m_hicons9=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_ICON10);m_hicons10=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_IC

24、ON11);m_hicons11=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_ICON12);SetClassLong(m_hWnd,GCL_HICON,(LONG)m_hicons0);/设置自己的图标SetTimer(1,500,NULL);/定义一个更新时间,图标的定时器/获取和设置时间,CTime t=CTime:GetCurrentTime();CString str=t.Format(%H:%M:%S);CClientDC dc(this);CSize sz=dc.GetTextExtent(str);int index=

25、0;index=m_wndStatusBar.CommandToIndex(IDS_TIME);m_wndStatusBar.SetPaneInfo(index,IDS_TIME,SBPS_NORMAL,sz.cx);/获取存储时间字符串的长度m_wndStatusBar.SetPaneText(index,str);/设置状态栏时间格的时间return 0;void CMainFrame:OnTimer(UINT nIDEvent) / TODO: Add your message handler code here and/or call default/实现变化应用程序的图标static

26、 int index=1;SetClassLong(m_hWnd,GCL_HICON,(LONG)m_hiconsindex);index=+index%12;/不断的获取系统时间CTime t=CTime:GetCurrentTime();CString str=t.Format(%H:%M:%S);CClientDC dc(this);CSize sz=dc.GetTextExtent(str);int sindex=0;sindex=m_wndStatusBar.CommandToIndex(IDS_TIME);m_wndStatusBar.SetPaneInfo(sindex,IDS_

27、TIME,SBPS_NORMAL,sz.cx);m_wndStatusBar.SetPaneText(sindex,str);CFrameWnd:OnTimer(nIDEvent);BOOL CSplashWnd:Create(CWnd* pParentWnd /*= NULL*/)if (!m_bitmap.LoadBitmap(IDB_StartBitmap)/加载启动画面位图return FALSE;BITMAP bm;m_bitmap.GetBitmap(&bm);return CreateEx(0,AfxRegisterWndClass(0, AfxGetApp()-LoadStan

28、dardCursor(IDC_ARROW),NULL, WS_POPUP | WS_VISIBLE, 0, 0, bm.bmWidth, bm.bmHeight, pParentWnd-GetSafeHwnd(), NULL);int CSplashWnd:OnCreate(LPCREATESTRUCT lpCreateStruct)if (CWnd:OnCreate(lpCreateStruct) = -1)return -1;/ Center the window.CenterWindow();/ Set a timer to destroy the splash screen.SetTi

29、mer(1,800, NULL);/设置启动画面显示的时间800Msreturn 0;void CSplashWnd:OnPaint()CPaintDC dc(this);CDC dcImage;if (!dcImage.CreateCompatibleDC(&dc)return;BITMAP bm;m_bitmap.GetBitmap(&bm);/ Paint the image.CBitmap* pOldBitmap = dcImage.SelectObject(&m_bitmap);dc.BitBlt(0,0,bm.bmWidth, bm.bmHeight, &dcImage, 0, 0

30、, SRCCOPY);dcImage.SelectObject(pOldBitmap);Sleep(800);/设置主应用程序窗口的休眠时间void CMyView:OnLButtonDown(UINT nFlags, CPoint point) / TODO: Add your message handler code here and/or call default/鼠标按下时完成的事件,保存起始点,如果要绘制的图形是点的话还要进行点的绘制if(m_Draw) m_ptorigin=m_ptold=point;if(m_Draw=1)/进行点的绘制CClientDC dc(this);CP

31、en pen(m_linestyle,m_linewidth,m_choicecolor);dc.SelectObject(pen);switch(m_dotstyle)case 1: dc.SetPixel(point.x+1,point.y+1,m_choicecolor);dc.SetPixel(point.x+1,point.y,m_choicecolor);dc.SetPixel(point.x-1,point.y,m_choicecolor);dc.SetPixel(point.x-1,point.y-1,m_choicecolor);dc.SetPixel(point.x,poi

32、nt.y+1,m_choicecolor);dc.SetPixel(point.x-1,point.y+1,m_choicecolor);dc.SetPixel(point.x,point.y-1,m_choicecolor);dc.SetPixel(point.x+1,point.y-1,m_choicecolor);dc.SetPixel(point.x,point.y,m_choicecolor);break;case 2:dc.MoveTo(point.x-5,point.y);dc.LineTo(point.x+5,point.y);dc.MoveTo(point.x,point.y

33、-5);dc.LineTo(point.x,point.y+5);break;case 3:dc.SetPixel(point,m_choicecolor);dc.SelectStockObject(NULL_BRUSH);dc.SelectObject(pen);dc.Ellipse(point.x-5,point.y-5,point.x+5,point.y+5);dc.SetPixel(point,m_choicecolor);break;CView:OnLButtonDown(nFlags, point);void CMyView:OnMouseMove(UINT nFlags, CPo

34、int point) / TODO: Add your message handler code here and/or call defaultif(m_Draw&m_ptorigin.x!=-1&m_ptorigin.y!=-1)/判断是否能进行绘图CClientDC dc(this);/设置绘制图形的设备 CPen pen(m_linestyle,m_linewidth,m_choicecolor); CPen *pOldPen=dc.SelectObject(&pen);dc.SetROP2(R2_NOTXORPEN);switch(m_Draw)/根据所选择的图形绘制不同的图形,一下

35、完成的是两次进行绘图,以实现橡皮筋功能case 1:break;case 2:dc.MoveTo(m_ptorigin);dc.LineTo(m_ptold);dc.SelectObject(pen);dc.MoveTo(m_ptorigin);dc.LineTo(point);break;case 3:dc.Rectangle(CRect(m_ptorigin,m_ptold);dc.Rectangle(CRect(m_ptorigin,point);break;case 4:dc.Ellipse(CRect(m_ptorigin,m_ptold);dc.SelectObject(pen);

36、dc.Ellipse(CRect(m_ptorigin,point);m_ptold=point;/不断的更新中介点,以实现橡皮筋功能dc.SelectObject(pOldPen);void CMyView:OnLButtonUp(UINT nFlags, CPoint point) / TODO: Add your message handler code here and/or call default/进行第三次绘图,以解决相交问题CClientDC dc(this);CPen pen(m_linestyle,m_linewidth,m_choicecolor);dc.SelectOb

37、ject(pen);dc.SelectStockObject(NULL_BRUSH);if(m_Draw=1)/存储点对象的数据Dot *pdot=new Dot;pdot-color=m_choicecolor;pdot-dotst=m_dotstyle;pdot-linest=m_linestyle;pdot-pt=m_ptorigin;pdot-linew=m_linewidth;/*m_pdotarray.Add(pdot);*/m_pDataArray.Add(pdot);if(m_Draw=2)dc.MoveTo(m_ptorigin);dc.LineTo(point);Line

38、*pt=new Line;pt-color=m_choicecolor;pt-linest=m_linestyle;pt-linew=m_linewidth;pt-stpt=m_ptorigin;pt-endpt=point;m_pDataArray.Add(pt);if(m_Draw=3)dc.Rectangle(CRect(m_ptorigin,point);Retangle1 *pt=new Retangle1;pt-color=m_choicecolor;pt-linest=m_linestyle;pt-linew=m_linewidth;pt-stpt=m_ptorigin;pt-e

39、ndpt=point;m_pDataArray.Add(pt);if(m_Draw=4)dc.Ellipse(CRect(m_ptorigin,m_ptold);Ellipse1 *pt=new Ellipse1;pt-color=m_choicecolor;pt-linest=m_linestyle;pt-linew=m_linewidth;pt-stpt=m_ptorigin;pt-endpt=point;m_pDataArray.Add(pt); m_ptorigin=-1; /用来停止一次图形的绘制CView:OnLButtonUp(nFlags, point);void CMyVie

40、w:OnDraw(CDC* pDC) /用C+多态重画客户区窗口CMyDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);/ TODO: add draw code for native data herefor(int i=0;ilinest,(BaseData*)m_pDataArray.GetAt(i)-linew,(BaseData*)m_pDataArray.GetAt(i)-color);int j=(BaseData*)m_pDataArray.GetAt(i)-linest;j=(BaseData*)m_pDataArray.GetAt(i

41、)-linew; j=(BaseData*)m_pDataArray.GetAt(i)-color;pDC-SelectObject(pen);pDC-SelectStockObject(NULL_BRUSH);(BaseData*)m_pDataArray.GetAt(i)-Draw(pDC); /一下是各种菜单项的响应函数void CMyView:OnDDot() / TODO: Add your command handler code herem_Draw=1;void CMyView:OnDLine() / TODO: Add your command handler code he

42、rem_Draw=2;void CMyView:OnDRetangle() / TODO: Add your command handler code herem_Draw=3;void CMyView:OnSColor() / TODO: Add your command handler code hereCColorDialog colordialog;if(IDOK=colordialog.DoModal()m_choicecolor=colordialog.m_cc.rgbResult;void CMyView:OnSDLineSW() / TODO: Add your command handler code hereSLineSW dlg;dlg.m_linest=m_linestyle;dlg.m_linewith=m_linewidth;if(IDOK=dlg.DoModal()m_linestyle=dlg.m_linest;m_linewidth=dlg.m_linewith;void CMyView:OnSDScross()

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922