mfc简单绘图程序(共43页).doc

上传人:飞****2 文档编号:13620646 上传时间:2022-04-30 格式:DOC 页数:43 大小:332KB
返回 下载 相关 举报
mfc简单绘图程序(共43页).doc_第1页
第1页 / 共43页
mfc简单绘图程序(共43页).doc_第2页
第2页 / 共43页
点击查看更多>>
资源描述

《mfc简单绘图程序(共43页).doc》由会员分享,可在线阅读,更多相关《mfc简单绘图程序(共43页).doc(43页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上 M F C简单的绘图程序 王帅专心-专注-专业目录摘要2关键字21 引言2设计目的32 功能说明2 2.1菜单栏3 2.1.1图形3 2.1.2画笔4 2.1.3画硬币4 2.2工具栏5 2.3状态栏53 功能的实现53.1 视图设计53.2 编辑资源6 3.3 编程思路及各个函数的实现7 (1)思路7 (2)代码的实现7 1.为基本形状创建一个基类8 2.基本形状类的创建8 2.1矩形类的创建及定义 8 2.2圆形类的创建及定义10 2.3正五边形类的创建及定义11 2.4正三角形类的创建及定义14 2.5椭圆类的创建及定义16 2.6正四边形类的创建及的定义17

2、 2.7正六边形类的创建及定义18 2.8直线类的创建及定义19 3.各基本形状类在CMyDraw2_0类中的调用和绘图的实现20 3.1矩形类的调用与与绘图的实现20 3.2圆形类的调用24 3.3正三角形类的调用25 3.4基本类型调用的剩余代码26 4.画笔的使用、颜色及大小的调整29 5.画硬币35 6.工具栏中的自定义控件38 7.状态栏中的显示394程序功能的测试415最后总结42摘要:本绘图程序能够进行基本图形的绘画,如直线,圆,矩形,三角形等等,并且在此基础上添加了多边形的绘画,如正五边形等。除此之外,还能够进行随手画,即用鼠标随意画线条。为了更好的绘图,还添加了对画笔粗细的调

3、整,以及对画笔颜色的调整,除了特定的颜色,颜色还可根据输入的RGB值随意更改。还有一些老师的要求,加入了画硬币、显示硬币数目即鼠标坐标等信息。本程序主要采用面向对象写法。关键字:程序设计,MFC,绘图1. 引言设计目的本绘图程序的设计不仅仅局限于老师课堂的要求,通过C+的编写实现绘图要求,我还想要在此基础上,加入自己的一些想法,想要更好地了解MFC,更好地去实现自己的想法。2. 功能说明 2.1菜单栏2.1.1图形图形栏中包括直线、矩形、圆形、椭圆、多边形,多边形中包括正三角形、正四边形、正五边形、正六边形。选择直线,可用鼠标拖动画出一条直线选择矩形,可用鼠标拖动画出矩形选择圆形,可用鼠标拖动

4、画出圆形 选择椭圆,可用鼠标拖动画出椭圆选择正三角形,可用鼠标拖动画出正三角形选择正四边形,可用鼠标拖动画出正方形选择正五边形,可用鼠标拖动画出正五边形选择正六边形,可用鼠标拖动画出正六边形(注:为了验证自己的想法以及想让画出的图形随意地变换方向,特意在正三角形一项中加入了旋转效果,使鼠标在拖动时能旋转三角形)2.1.2画笔 画笔栏中包括颜色、大小及铅笔 (1)颜色 颜色中包括黑色、红色、绿色、蓝色、橙色、黄色、青色、紫色、粉色、 自定义 选择黑色,画出的图形将为黑色 选择红色,画出的图形将为红色 选择绿色,画出的图形将为绿色 选择橙色,画出的图形将为橙色 选择黄色,画出的图形将为黄色 选择青

5、色,画出的图形将为青色 选择紫色,画出的图形将为紫色 选择粉色,画出的图形将为粉色 选择自定义,可输入RGB值,画出的图形将显示输入的颜色 (2)大小 大小中包括1、2、3、4、5、6、7 选择1,画笔大小设为1 选择2,画笔大小设为2 选择3,画笔大小设为3 选择4,画笔大小设为4 选择5,画笔大小设为5 选择6,画笔大小设为6 选择7,画笔大小设为7 (3)铅笔 选中铅笔后,将可以用鼠标进行随意画线 2.1.3画硬币 画硬币中包括画、增加、减少、清除 选择画,将在客户端窗口中画出初始数量为10的硬币 选择增加,窗口中的硬币数目将增加1个 选择减少,窗口中的硬币数目将减少1个 选择清除,刷新

6、窗口,将硬币消去 2.2工具栏 工具栏中除了原有的图标外,还加入了自定义的图标选择,可用鼠标拖动画出一条直线选择,可用鼠标拖动画出矩形选择,可用鼠标拖动画出圆形选择,可用鼠标拖动画出正三角形选择,可用鼠标进行随手画选择,可在窗口画出硬币后,将硬币数量+1选择,可在窗口画出硬币后,将硬币数量-1选择,可利用鼠标对所绘图形进行擦除,橡皮擦的大小与画笔大小相同 2.3状态栏 状态栏中除了原有的显示外,还加入了硬币的数量以及鼠标的x坐标和y坐标3. 功能的实现 3.1视图设计 利用MFC 生成画图应用程序框架具体步骤如下:(1)执行VC程序,选择File|New命令,弹出New对话框.单击Projec

7、ts标签,转到Projects选项卡,选择MFC AppWizard(exe)选项,然后在Project name文本框中输入MyDraw2_0(原来也做过一个,不过并没有以面向对象的写法去写,这个就当作是我的第二个版本),文本框是指项目的本地路径。(2)由于本程序是实现画线,要在视图中完成,所以首先创建一个基于单文档的应用程序 3.2编辑资源(1) 利用ResourceView中的Menu编辑器在菜单栏添加菜单,该流程图如下3.2所示: 图3.2(2) 利用ResourceView中的ToolBar编辑器,在工具栏中添加自定义控件。控件图案如下所示: 3.3编程思路及各个函数的实现(1)思路

8、:首先,画定义好的形状。直线、矩形、圆形等等都属于基本的形状,那么我设定一个基类,称它为CShape,给这个基类定义一个画画的虚函数Draw(CDC *pDC),在这个类里面派生出各个需要的类,如CCircle类,并为这些派生类定义各自的属性及方法,重写基类的Draw函数。当我需要用到这些类的时候,只需要在View类里创建指针,然后调用里面Draw方法。由于是当鼠标拖动的时候画出所需的图形,需要添加鼠标响应函数,onLButtonDown(),onLButtonUp,以及onMouseMove()。画画主要是在onMouseMove()里实现。接着,是画笔的颜色和大小,本来是想单独创建一个画笔

9、类,定义颜色和大小属性,使CCircle等派生类多继承,在继承一个画笔类,但尝试了几遍,发现在菜单里选择颜色时就会使程序停止运行,于是就放弃了。重新构思之后,由于画图是在CMyDraw2_0里实现的,就直接在CMyDraw2_0中定义了颜色和大小的变量,这样也方便。然后是画硬币。并没有为这个创建单独的类,直接在CMyDraw2_0中的OnDraw()中画硬币,并且在CMyDraw2_0中添加了增加和减少硬币的方法。工具栏中只要和为各个图标添加函数,作用和菜单栏中的图形一栏中对应即可。最后还有硬币的数量和鼠标坐标放在状态栏中显示,下面开始进行函数代码的实现。(2) 代码的实现:1. 为基本形状创

10、建一个基类,命名为CShape。在ClassViewz中右键点击MyDraw2_0 classes-new class,在弹出窗口的顶部下拉框中选择Generic Class,如图所示在头文件中添加虚函数Draw(CDC *pDC)public:CShape();virtual Draw(CDC* pDc)=0;/添加的虚函数virtual CShape();2. 基本形状类的创建(注:以矩形、圆形、正五边形、正三边形为重点介绍) 2.1矩形类的创建及定义创建一个矩形类,继承CShape类,如图在该类中重新定义画画函数Draw(),并添加带参数的构造函数,矩形的左上角,以及矩形的宽度和高度,代

11、码如下:Public: CRectangle();Draw(CDC* pDC); /重新定义Draw函数CPoint point_LeftUp; /矩形的左上角坐标CRectangle(int x,int y,int w=0,int h=0);/带参数的构造函数,x表示左上角的横坐标,y表示左上角的纵坐标int width; /矩形的宽度int height; /矩形的高度virtual CRectangle(); 在无参数构造函数中初始化point_LeftUp的坐标和宽度以及高度的值,代码如下: CRectangle:CRectangle()point_LeftUp.x=0; /左上角坐标

12、x值设置为0point_LeftUp.y=0; /左上角坐标x值设置为0width=0; /矩形的宽度初始为0height=0; /矩形的高度初始为0 在带参数的构造函数中将值赋给point_LeftUp和宽度以及高度,代码如下: point_LeftUp.x=x; /将传入的x值赋给左上角坐标的x值point_LeftUp.y=y; /将传入的y值赋给左上角坐标的y值width=w;/将传入的w值赋给widthheight=h;/将传入的h值赋给height 重写Draw(CDC* pDC)函数,代码如下:CRectangle:Draw(CDC* pDC)pDC-Rectangle(poin

13、t_LeftUp.x,point_LeftUp.y,point_LeftUp.x+width, point_LeftUp.y+height); /利用Rectangle()函数画出矩形,其中的值分别为矩形的左上角横坐标,左上角纵坐标,右下角横坐标,右下角纵坐标在CMyDraw2_0View中引入矩形类的头文件:双击CMyDraw2_0View,在代码/ MyDraw2_0View.h : interface of the CMyDraw2_0View class/#if !defined(AFX_MYDRAW2_0VIEW_H_C_6744_4AD2_80A4_D44683D0A5AF_INC

14、LUDED_)#define AFX_MYDRAW2_0VIEW_H_C_6744_4AD2_80A4_D44683D0A5AF_INCLUDED_下添加如下代码: #include Rectangle.h并在View类中添加私有成员变量,创建矩形类的指针: 右键点击CMyDraw2_0View,选择Add Member Variable, 在弹出的对话框中如下输入: 将在CMyDraw2_0View头文件中出现如下代码Private:CRectangle *rectangle;/定义指向矩形类的指针, 为私有变量2.2圆形类的创建及定义创建一个圆形类,命名为CCircle,继承CShape类

15、,在该类中添加公有成员变量,代码如下:public:CCircle();CCircle(int x,int y,int radius=0);/带参数的构造函数,其中,x表示圆心的x值,y表示圆心的y值,radius表示圆的半径Draw(CDC* pDC); /重新定义Draw函数virtual CCircle();int Radius; /定义圆的半径CPoint center_point; /定义圆的中心点在无参数的构造函数中初始化变量值,代码如下:CCircle:CCircle()center_point.x=0; /圆心的横坐标初始为0center_point.y=0; /圆心的纵坐标初

16、始为0Radius=0; /圆的半径初始为0 在带参数的构造函数中将传入的值赋给各变量,代码如下:CCircle:CCircle(int x,int y,int radius)center_point.x=x; /将传入的x值赋给圆心的横坐标center_point.y=y; /将传入的y值赋给圆心的纵坐标Radius=radius; /将传入的radius值赋给圆的半径 重写定义的Draw函数,代码如下:CCircle:Draw(CDC* pDC)pDC-Ellipse(center_point.x-Radius,center_point.y-Radius,center_point.x+Ra

17、dius,center_point.y+Radius);/利用Ellipse()函数进行圆的绘制,其中的值分别为圆的外接正方形的左上角横坐标、纵坐标,右下角横坐标、纵坐标在CMyDraw2_0View中引入圆形类的头文件: #include Circle.h添加私有成员变量,创建圆形类的指针变量: CCircle *circle; /创建圆形类的指针,可以直接写在矩形类只针对下方2.3正五边形类的创建及定义 创建一个正五边形类,命名为CPentangle,继承CShape类, 在该类中添加公有成员变量,代码如下:public:CPentangle();CPentangle(int x,int

18、y,int radius=0);/带参数的构造函数,x为外接圆圆心的横坐标,y为外接圆圆心的纵坐标,radius为外接圆的半径int Radius; /定义外接圆半径CPoint cP; /定义外接圆圆心Draw(CDC* pDC); /重新定义Draw函数virtual CPentangle();在无参数的构造函数中初始化各变量,代码如下:CPentangle:CPentangle()cP.x=0; /圆心横坐标初始为0cP.y=0; /圆心纵坐标初始为0Radius=0; /外接圆半径初始为0在带参数的构造函数中将传入的值赋给各变量,代码如下:CPentangle:CPentangle(i

19、nt x,int y,int radius)cP.x=x; /将传入的x值赋给圆心的横坐标cP.y=y; /将传入的y值赋给圆心的纵坐标Radius=radius; /将传入的radius值赋给外接圆半径下面重写的Draw函数与前两个不同,需要用到数学函数cos()以及sin(),由于两个函数用的是弧度制,还需引入数学变量PI,为了能够顺利的写入这些函数,需要在CPentangle类的客户端中引入数学类的头文件:双击ClassView中的CPentangle(),在出现的构造函数上方,在如下代码/ Pentangle.cpp: implementation of the CPentangle

20、class./#include stdafx.h#include MyDraw2_0.h#include Pentangle.h 下添加数学类头文件:#include “math.h” 再定义一个宏变量PI,添加如下代码:#define PI 3. 开始重写Draw(CDC* pDC)函数,代码如下:CPentangle:Draw(CDC* pDC)double rc=Radius*cos(36*PI/180); /将半径和36度的余弦值相乘并且赋给新的变量rcdouble rs=Radius*sin(36*PI/180); /将半径和36度的正弦值相乘并且赋给新的变量rsdouble Rc=

21、Radius*cos(18*PI/180); /将半径和18度的余弦值相乘并且赋给新的变量Rcdouble Rs=Radius*sin(18*PI/180);/将半径和18度的正弦值相乘并且赋给新的变量Rs POINT pts=cP.x+rs,cP.y+rc,cP.x-rs,cP.y+rc,cP.x-Rc,cP.y-R s,cP.x,cP.y-Radius,cP.x+Rc,cP.y-Rs;/利用点类的数组将五个点储存在点数组pts中pDC-Polygon(pts,5); /利用函数Polygon()进行多边形的绘画,其中pts为储存的点,5为点的个数下面对Draw函数中各数据进行深层次的分析,

22、表明它们的来历:如图所示:以外接圆圆心为坐标轴中心,设该点的坐标为(cP.x,cP.y);则右下角的坐标为cP.x+R*sin(36*PI/180),cP.y+R*cos(36*PI/180)按顺时针方向看,接下去的几个点的坐标分别为cP.x-R*sin(36*PI/180),cP.y+R*cos(36*PI/180)cP.x-R*cos(18*PI/180),cP.y-R*sin(18*PI/180)cP.x,cP.y-RcP.x+R*cos(18*PI/180),cP.y-R*sin(18*PI/180)以上为正五边形5个点的来历,接下来在CMyDraw2_0View中引入正五边形类的头文

23、件: #include “Pentangle.h”添加一个私有变量,创建指向正五边形的指针变量: CPentangle *pentangle; 2.4正三角形类的创建及定义(这个类中添加了旋转)创建一个正三角形类,命名为CDelta,继承CShape类,在该类中添加公有成员变量,代码如下:public:CDelta();CDelta(int x,int y,int radius=0); /带参数的构造函数,其中x为外接圆圆心的横坐标,y为外接圆圆心的纵坐标,radius为外接圆半径int Radius; /外接圆半径CPoint cp; /外接圆圆心double theta; /在正三角形原图

24、上旋转过的角度double st; /该变量储存的是sin(theta)double ct; /该变量储存的事cos(theta)Draw(CDC* pDC); 重新定义Draw函数virtual CDelta();在无参数构造函数中初始化变量,代码如下: CDelta:CDelta()cp.x=0; /圆心的横坐标初始为0cp.y=0; /圆心的纵坐标初始为0Radius=0; /外接圆半径初始为0 在带参数构造函数中将传入的值赋给各变量,代码如下:CDelta:CDelta(int x,int y,int radius)cp.x=x; /将传入的x值赋给圆心的横坐标cp.y=y; /将传入

25、的y值赋给圆心的纵坐标Radius=radius; /将传入的radius值赋给外接圆半径ct=1; /调用该函数时将cos(theta)设置为1st=0; /调用该函数时将sin(theta)设置为0与正五边形相同,要引入数学类的头文件以及定义宏变量PI,#include “math”#define PI 3. 开始重写定义的Draw(CDC* pDC)函数,代码如下:CDelta:Draw(CDC* pDC)double rc=Radius*cos(60*PI/180); /外接圆半径与60度余弦值相乘后赋给rcdouble rs=Radius*sin(60*PI/180); /外接圆半径

26、与60度正弦值相乘后赋给rsct=cos(theta); /将theta的余弦值赋给ctst=sin(theta); /将theta的正弦值赋给stPOINT dx1,dx11; /定义两个点(接下来会详细说明)POINT dx2,dx22; /同上POINT dx3,dx33; /同上dx1.x=cp.x-cp.x;dx1.y=cp.y-Radius-cp.y;dx11.x=dx1.x*ct-dx1.y*st+cp.x;dx11.y=dx1.y*ct+dx1.x*st+cp.y;dx2.x=cp.x-rs-cp.x;dx2.y=cp.y+rc-cp.y;dx22.x=dx2.x*ct-dx2

27、.y*st+cp.x;dx22.y=dx2.y*ct+dx2.x*st+cp.y;dx3.x=cp.x+rs-cp.x;dx3.y=cp.y+rc-cp.y;dx33.x=dx3.x*ct-dx3.y*st+cp.x;dx33.y=dx3.y*ct+dx3.x*st+cp.y; POINTpts=dx11.x,dx11.y,dx22.x,dx22.y,dx33.x,dx33.y;/定义点数组,存储正三角形的三个点pDC-Polygon(pts,3);/利用画多边形的函数Polygon()画正三角形,pts为储存的三个点,3为点的个数接下来对Draw函数里的变量以及运算进行解释:R如图所示,正三

28、角形的中心到各顶点的距离为半径,设中心点的坐标为(cp.x,cp.y),则可得到右下角的坐标为cp.x+R*sin(60*PI/180),cp.y+R*cos(60*PI/180)按顺时针方向,接下来两个点的坐标分别为cp.x-R*sin(60*PI/180),cp.y-R*cos(60*PI/180)cp.x,cp.x-R此时,我们得到了三个顶点的坐标,如果按这三个点的坐标画图,就会得到如图所示的三角形,在此基础上,不妨设此图形逆时针转过的角度为,有以下原理作为基础:设一个点的坐标为(x1,y1),它绕另一个点(x2,y2)旋转角,得到新的点的坐标为:x=(x1-x2)*cos-(y1-y2

29、)*sin+x2;y=(y1-y2)*cos+(x1-x2)*sin+y2;显然,只需得到三个点绕中心旋转后各自的新坐标,我们就可以根据旋转的角得到新的正三角形在Draw(CDC * pDC)函数中,用theta来代替,以右下角顶点为例,原坐标为cp.x+rs,cp.y+rc按如下代码将cos(theta)和sin(theta)替换:ct=cos(theta);st=sin(theta);用dx3.x储存该点与中心点横坐标的差dx3.y储存该点与中心点纵坐标的差,如下:dx3.x=cp.x+rs-cp.x;dx3.y=cp.y+rc-cp.y; 用dx33储存该点旋转后得到的新的坐标:dx33

30、.x=dx3.x*ct-dx3.y*st+cp.x;dx33.y=dx3.y*ct+dx3.x*st+cp.y;这样就得到了该点旋转后的坐标,其它两点按同样方法即可得到新坐标,dx22为左下角的新坐标,dx11为正上方的新坐标接下来,在CMyDraw2_0View的头文件中引入正三角形类,#include “Delta.h”添加私有变量,创建正三角形类的指针变量:CDelta* delta;接下来我直接给出剩下基本形状类的代码(只在当中作注释,不再详细解释)2.5椭圆类的创建和定义创建名为CEllipse的类,继承CShape,在该头文件中添加如下代码:class CEllipse : pub

31、lic CShape public:CEllipse();CEllipse(int x,int y,int w=0,int h=0); /带参数的构造函数,值分别为外接矩形左上角的横坐标、纵坐标、宽度、高度int width; /外接矩形的宽度int height; /外接矩形的高度CPoint center_point; /椭圆中心点Draw(CDC* pDC); /重新定义Draw函数virtual CEllipse();在该类app中添加如下代码:CEllipse:CEllipse()center_point.x=0; /将中心点横坐标初始为0center_point.y=0; /将中心

32、点纵坐标初始为0width=0; /将外接矩形宽度初始为0height=0; /将外接矩形高度初始为0CEllipse:CEllipse(int x,int y,int w,int h)center_point.x=x; /将传入的x值赋给中心点的横坐标center_point.y=y; /将传入的y值赋给中心点的纵坐标width=w; /将传入的w值赋给宽度height=h; /将传入的h值赋给高度CEllipse:Draw(CDC* pDC)pDC-Ellipse(center_point.x-width,center_point.y-height,center_point.x+width

33、,center_point.y+height);/利用Ellipse()函数画椭圆在CMyDraw2_0View的头文件中引入椭圆类,#include “Ellipse.h”添加私有变量,创建椭圆类的指针变量:CEllipse *ellipse;2.6正四边形类的创建及定义命名为CQuadrangle,头文件中添加如下代码:public:CQuadrangle();CQuadrangle(int x,int y,int radius=0); /带参数的构造函数,参数分别为中心点的横坐标、纵坐标、外接圆半径int Radius; /外接圆半径CPoint cPoint; /中心点Draw(CDC

34、* pDC); /重新定义Draw函数virtual CQuadrangle();在该类app中添加如下代码: CQuadrangle:CQuadrangle()cPoint.x=0; /将中心点的横坐标初始为0cPoint.y=0; /将中心点的纵坐标初始为0Radius=0; /将外接圆的半径初始为0CQuadrangle:CQuadrangle(int x,int y,int radius)cPoint.x=x; /将传入的x值赋给中心点的横坐标cPoint.y=y; /将传入的y值赋给中心点的纵坐标Radius=radius; /将传入的radius赋给外接圆半径CQuadrangle

35、:Draw(CDC* pDC)double Rc=Radius*cos(45*PI/180); /将半径与45度余弦值的乘积赋给Rc POINT pts=cPoint.x+Rc,cPoint.y+Rc,cPoint.x+Rc,cPoint.y-Rc,cPoint.x-Rc,cPoint.y-Rc,cPoint.x-Rc,cPoint.y+Rc; /定义点数组,储存四个顶点pDC-Polygon(pts,4);/利用多边形绘画函数画正四边形在CMyDraw2_0View的头文件中引入正四边形类,#include “Quadrangle.h”添加私有变量,创建正四边形类的指针变量:CQuadran

36、gle *quadrangle;2.7正六边形的创建及定义命名为CRegularHexagon,头文件中添加如下代码:public:CQuadrangle();CQuadrangle(int x,int y,int radius=0);/带参数的构造函数,参数分别为中心点的横坐标、纵坐标、外接圆半径int Radius;/外接圆半径CPoint cPoint;/中心点Draw(CDC* pDC);/重新定义Draw函数virtual CQuadrangle();在该类app中添加如下代码:CRegularHexagon:CRegularHexagon()cp.x=0;/将中心点的横坐标初始为0

37、cp.y=0;/将中心点的纵坐标初始为0Radius=0;/将外接圆的半径初始为0CRegularHexagon:CRegularHexagon(int x,int y,int radius)cp.x=x;/将传入的x值赋给中心点的横坐标cp.y=y;/将传入的y值赋给中心点的纵坐标Radius=radius;/将传入的radius值赋给外接圆半径CRegularHexagon:Draw(CDC* pDC)double rs=Radius*sin(30*PI/180);/将半径与30度正弦值的乘积赋给rsdouble rc=Radius*cos(30*PI/180);/将半径与30度余弦值的乘

38、积赋给rcdouble Rs=Radius*sin(60*PI/180);/将半径与60度正弦值的乘积赋给Rsdouble Rc=Radius*cos(60*PI/180);/将半径与60度余弦值的乘积赋给RcPOINT pts=cp.x+rs,cp.y+rc,cp.x-rs,cp.y+rc,cp.x-Radius,cp.y,cp.x-Rc,cp.y-Rs,cp.x+Rc,cp.y-Rs,cp.x+Radius,cp.y;/定义点数组pts,储存正六边形的六个顶点pDC-Polygon(pts,6);/利用多边形绘画函数画出正六边形在CMyDraw2_0View的头文件中引入正六边形类,#in

39、clude “RegularHexagon.h”添加私有变量,创建正六边形类的指针变量:CRegularHexagon* regularhexagon;2.8直线类的创建及定义命名为CLine,在头文件中添加如下代码:public:CLine();CLine(int sx,int sy,int ex=0,int ey=0);/带参数的构造函数,分别为直线起点的横坐标、纵坐标,终点的横坐标、纵坐标Draw(CDC* pDC);/重新定义Draw函数CPoint p_start; /定义直线起点CPoint p_end;/定义直线终点virtual CLine();在该类app中添加如下代码: C

40、Line:CLine()p_start.x=0;/将起点横坐标初始为0p_start.y=0;/将起点纵坐标初始为0p_end.x=0;/将终点横坐标初始为0p_end.y=0;/将终点纵坐标初始为0CLine:CLine(int sx,int sy,int ex,int ey)p_start.x=sx;/将sx的值赋给起点的横坐标p_start.y=sy;/将sy的值赋给起点的纵坐标p_end.x=ex;/将ex的值赋给终点的横坐标p_end.y=ey;/将ey的值赋给终点的纵坐标CLine:Draw(CDC* pDC)pDC-MoveTo(p_start);/利用MoveTo()函数画出直

41、线起点pDC-LineTo(p_end);/利用LineTo()函数从起点画直线到终点在CMyDraw2_0View的头文件中引入直线类,#include “Line.h”添加私有变量,创建直线类的指针变量:CLine* line;3. 各基本形状类在CMyDraw2_0View类中的调用与绘图的实现 (注:以矩形、圆形、正三角形为重点介绍) 3.1矩形类的调用与与绘图的实现绘图的过程是:鼠标左键按下-鼠标移动-鼠标左键弹起在此,引入鼠标的三个响应函数,分别对应该三个过程:按下ctrl+w,弹出如图所示对话框,并按如图操作,选择右侧的Add Function(本应是黑色,由于已添加,变为灰色),将三个响应函数添加到CMyDraw2_0View类app中。现在,需要告诉鼠标,当鼠标左键按下时开始进行绘画,那么,需要添加一个变量,告诉鼠标是否进行绘画:为View类添加私有

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁