C++画图板.docVIP

  • 47
  • 0
  • 约4.93千字
  • 约 20页
  • 2017-05-12 发布于河南
  • 举报
C画图板

C++课程设计之画图板程序 第一部分 创建MFC应用程序 首先,打开VS2010,新建工程文件,文件名设置为DrawingBoard.cpp。设置应用程序类型为单个文档,完成创建,如图1。 图1 新建工程文件 在资源视图中,打开Menu选项卡,选择IDR_MAINFRAME,创建一个名为绘图的文件选项。 图2 创建文件选项 第二部分 实现绘图功能 同样的,在绘图选项的下拉菜单中我们创建三个不同的选项名,即:点、线、矩形、椭圆,并分别设置它们的ID为IDM_DOT,IDM_LINE,IDM_RECTANGLE,IDM_ELLAPSE。如下图: 图3 创建下拉菜单选项 接下来我们为点这一菜单项在CDrawingBoardView类中添加事件处理程序,如图: 图4 为菜单项(点)创建事件处理程序 同理,为线、矩形和椭圆添加事件处理程序并编辑它们的代码,如下图: 图5 编译事件处理程序代码 在CDrawingBoardView类中添加成员变量,变量名设置为m_nDrawType,变量类型为UINT,访问为private。如下图: 图6 创建成员变量m_nDrawType 随后,在CDrawingBoardView()函数中为刚定义好的变量初始化,设置为0。变量m_nDrawType的作用在于,供给用户选择绘制的图形类型(点、线、矩形和椭圆)。在刚才设置好的响应函数分别设置该变量的值,m_nDrawType=1表示为点、m_nDrawType=2表示为线、m_nDrawType=3表示为矩形、m_nDrawType=4表示为椭圆。如下: 图7 设定m_nDrawType在不同响应函数中的值 在在CDrawingBoardView类中添加成员变量,变量名设置为m_ptOrigin,变量类型为UINT,访问为private,并将其初始化为0。这个变量用于存储光标的起始点。如下图: 图8 初始化成员变量m_ptOrigin 打开类向导,在类CDrawingBoardView中添加鼠标左键按下和松开的消息响应函数。如图: 图9 创建鼠标左键的响应函数 在鼠标左键按键按下这一响应函数中将坐标赋值给成员变量m_ptOrigin。如图: 图10 对变量m_ptOrigin赋值 在鼠标左键松开这一响应函数中,通过编写switch语句,使得用户可以对绘制的图形进行选择,例如:如果m_DrawType=3,则选择矩形。并且将绘制图形的函数分别写在对应的case语句中。如下: 图11 在switch语句中编写图形程序 完成后,我们继续添加一个名为CGraph的类。创建这个类的目的是保存图形的特征,即起始点、终点和图形类型。在类中我们写入下述语句: 图12 在CGraph类中保存图形特征 接下来,我们创造一个成员变量m_ptrArray用来保存CGraph的地址,如下: 图13 添加成员变量m_ptrArray 随后我们回到DrawingBoardView()中,在结尾处存储类地址,如下: 图14 存储类CGraph的地址 编译运行的结果如下: 图15 编译结果 通过上图我们可以看出,这一图形绘制程序有个很明显的问题,那就是图形之间重叠的部分会互相遮挡。为了改善这一问题,我们定义一个CPen类型的变量拥有设置画笔,并且将画刷改为透明的。如下: 图16 定义CPen类型变量并设置透明画刷 再次编译运行,结果如我们预期一样,图形间互相重叠的问题得以解决,如下图: 图17 编译结果 第三部分 添加图形的修改菜单选项 上面部分中我们已经完成了画图板的基本功能,可以通过用户选择实现不同图形的绘制。接下来我们便完成画图板的其它功能,即选择线宽、线型和颜色。 1. 线宽选项的编写 首先我们在资源视图中新建一个对话框,并将它的Caption改为Setting。如下: 图18 创建Setting对话框 然后我们在该对话框界面上添加两个控件,即文本框和编辑框。文本框用于显示我们改写选项的名字而编辑框用于接收我们输入的线框值。如下图: 图19 创建线宽的编辑框 通过类向导,我们在CSettingDlg这个类中添加成员变量m_nLineWidth。变量类型为UINT,如下图: 图20 在CSetting中添加变量m_nLineWidth 在菜单编辑窗口绘图的下拉菜单中添加设置按键,并且设置其ID号为IDM_SETTING。打开类向导,通过IDM_SETTING添加命令响应函数,如下图: 图21 为对话框添加消息响应函数 在其响应函数OnSetting()中添加函数DoModal来显示对话框。语句如下图: 图22 添加DoModal函数来显示对话框 上述代码中,我们用m

文档评论(0)

1亿VIP精品文档

相关文档