教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 教学研究 >

简易画图软件之大作业报告

来源:网络收集 时间:2026-09-04
导读: 用MFC做的一个画图软件,有直线、点、矩形、椭圆、连续线,线型选择、颜色设置 “windows编程”大作业报告 题目: 绘图程序 姓名: 学号: 班级: 任课老师: 日期:2012年5月31日 用MFC做的一个画图软件,有直线、点、矩形、椭圆、连续线,线型选择、颜色设置 1.

用MFC做的一个画图软件,有直线、点、矩形、椭圆、连续线,线型选择、颜色设置

“windows编程”大作业报告

题目: 绘图程序 姓名: 学号: 班级: 任课老师:

日期:2012年5月31日

用MFC做的一个画图软件,有直线、点、矩形、椭圆、连续线,线型选择、颜色设置

1. 系统概述

本软件是利用VC++这个强大的可视化编程工具开发的。软件主要功能包括图形的绘制、线型的设置、颜色的设置,图形文件的重绘和保存等功能。本软件具有实用性、稳定性、易用性,和可维护性的特点,应该说它应是一个开放性的软件,用户可以根据需要对其功能进行扩充、晚上与修改,是其符合自己的要求。总之。本软件是一个逐步晚上的软件。

2. 程序功能及操作说明

(1)画点的实现:在编辑菜单里选择绘制菜单—>点

(2)画直线的实现:选择画笔样式(线型)->选择画板(颜色)->点击编辑菜单上的直线选项

用MFC做的一个画图软件,有直线、点、矩形、椭圆、连续线,线型选择、颜色设置

(3)矩形的实现:选择画笔样式(线型)->选择画板(颜色)->点击编辑菜单上的矩形选项

(4)椭圆的实现:选择画笔样式(线型)->选择画板(颜色)->点击编辑菜单上的椭圆选项

用MFC做的一个画图软件,有直线、点、矩形、椭圆、连续线,线型选择、颜色设置

(5)连续线的实现:选择画笔样式(线型)->选择画板(颜色)->点击编辑菜单上的连续线选项

(6)坐标的实现:在可编辑区域内显示鼠标所在的位置

3.程序结构分析

用MFC做的一个画图软件,有直线、点、矩形、椭圆、连续线,线型选择、颜色设置

首先,新建一个单文档类型的MFC AppWizard(exe)工程,工程取名为:Graphic。为次程序添加一个子菜单,菜单名称为“绘图”,并为其添加五个菜单项,分别用来控制不同图形的绘制。当用户选择其中的一个菜单项后,程序将按照当前的选择进行和相应图形的绘制。添加的五个菜单项的ID及名称如表1所示。然后分别为这五个菜单项添加命令响应,本程序让视图(CCGraphic View)对这些菜单命令进行响应,这五个响应函数的名称分别如表1所示。

表格 1 添加的菜单项

以便随后的绘图操作使用。因此在CCGraphicView类中添加私有变量m_nDrawType;用来保存用户的选择,该变量的定义如下所述: private int m_nDrawType;

接着,在视类的够着函数中将此变量初始化为0,程序代码如下: CGraphicView::CGaphicView() {

//TODO:add construction code here M_nDrawType=0; }

用MFC做的一个画图软件,有直线、点、矩形、椭圆、连续线,线型选择、颜色设置

利用switch/case语句,来分别完成相应图形的绘制。当用户选择【绘图】菜单下的不同子菜单项时,将变量m_nDrawType设置为不同的值。程序代码如下:

void CGraphicView::OnDot() {

// TODO: Add your command handler code here m_nDrawType=1; }

void CGraphicView::OnLine() {

// TODO: Add your command handler code here m_nDrawType=2; }

void CGraphicView::OnRectangle() {

// TODO: Add your command handler code here m_nDrawType=3; }

void CGraphicView::OnEllipse() {

// TODO: Add your command handler code here m_nDrawType=4; }

void CGraphicView::OnLianxuxian(UINT nFlags, CPoint point) {

// TODO: Add your command handler code here m_nDrawType=5; }

对于直线、矩形和椭圆,在绘制时都可有两点来确定其图形。当鼠标左击时得到一个点,当鼠标左键松开时得到另外一个点。为视类CGraphicView分别捕捉鼠标左键按下和弹起这两个消息。另外当鼠标左键按下时,需要将鼠标当前按下点保存,因此我们为CGraphicView再增加一个CPoint类型的私有成员变量:m_ptOrigin,在视类的构造函数中将此变量初始化为0.在鼠标按下消息响应函数中,保存该点,代码如下:

void CGraphicView::OnLButtonDown(UINT nFlags, CPoint point) {

// TODO: Add your message handler code here and/or call default CMainFrame* pMainFrame = (CMainFrame*)GetParent(); pMainFrame->m_wndStatusBar.SetPaneText(1, "按下左键"); m_bDraw=true;

m_ptOrigin=point; //保存鼠标按下得到点,也是绘制一个点 m_ptFrom=point; m_ptTo=point;

用MFC做的一个画图软件,有直线、点、矩形、椭圆、连续线,线型选择、颜色设置

CView::OnLButtonDown(nFlags, point);

}

在鼠标左键弹起消息响应函数中实现绘图,到吗如下:

void CGraphicView::OnLButtonUp(UINT nFlags, CPoint point) {

// TODO: Add your message handler code here and/or call default CMainFrame* pMainFrame = (CMainFrame*)GetParent(); pMainFrame->m_wndStatusBar.SetPaneText(1, "放开左键"); m_bDraw=false;

CClientDC dc(this); CPen *pOldPen;

CPen NewPen(penStyle, 1, m_clr); pOldPen=dc.SelectObject (&NewPen);

//dc.SetBkMode(TRANSPARENT); //OPAQUE:背景在绘制之前用当前背景色填充

//TRANSPARENT:背景在绘图前不改变 switch(m_nDrawType) {

case 1:

dc.SetPixel(point,m_clr); //绘制点 break; case 2: {

CClientDC dc(this);

CPen pen(penStyle,1,m_clr);

CPen *pOldpen = dc.SelectObject(&pen);

dc.MoveTo(m_ptOrigin); //调用MoveTo函数移动到原点 dc.LineTo(point); //调用LineTo函数绘制到终点 break; }

case 3:

dc.Rectangle(CRect(m_ptOrigin,point)); break; case 4:

dc.Ellipse(CRect(m_ptOrigin,point)); break; }

CView::OnLButtonUp(nFlags, point); }

4.系统设计难点及解决办法

(1)起初不知道用什么消息函数绘制图形,OnDraw()函数是直接绘制的,不能满足自己软件的设计需要。

用MFC做的一个画图软件,有直线、点、矩形、椭圆、连续线,线型选择、颜色设置

解决方法:通过不断的思考和讨论,以及汲取些前人的经验,采用switch/case的方式获取将要使用的工具型号,再借助于OnLButtonDown()函数和OnLButtonUp()函数获取鼠标的位置,绘制图形。 (2)不知道如何制作选择颜色的画板

解决方法:通过上网查找消息,可以通过软件本身自带的颜色对话框来显示,再编辑些代码将所需要的画板功能实现出来。

5.总结

…… 此处隐藏:1693字,全部文档内容请下载后查看。喜欢就下载吧 ……
简易画图软件之大作业报告.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/1570052.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)