77范文网 - 专业文章范例文档资料分享平台

MFC绘图版 软件说明书

来源:网络收集 时间:2019-02-21 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

广西工学院课程设计用纸

广西工学院计算机工程系

《Windows程序设计》

课程设计说明书

课题名称:

学生姓名:

学 号:

班 级:

指导教师:

完成日期: 年 月 日

第 页 共 页

广西工学院课程设计用纸

目 录

1.问题陈述及其软件功能概述.............................................P

2.总体设计………………………………………………….P

3.详细设计和部分程序代码………………………...……..P

4.运行结果及分析………………………………………….P

5.总结……………………………………………………….P

第 页 共 页

广西工学院课程设计用纸

1. 问题陈述及其软件功能概述

1.1问题陈述

本次课程设计,我所选择的题目是<多功能绘图软件>。 面临以下主要几个问题: 1) 如何用鼠标进行画图?

2) 如何绘制一下几种图形,线,带箭头的线,任意线,圆,椭圆,矩形? 3) 如何在内存中保存以上几种图形? 4) 如何将图形保存到文件中去?

5) 如何从文件中读取以前画过的图形? 面临以下几个次要的问题: 1) 如何选择绘画的类型?

2) 如何改变画笔的颜色和宽度和形状? 3) 如何实现图形的橡皮条功能? 4) 如何实现图形中的透明画刷功能? 5) 如何实现图形的重绘? 6) 如何实现画图工具栏?

7) 如何实现状态栏鼠标坐标显示和当前时间显示? 8) 如何打开txt文档以及如何改变显示文本的字体? 9) 如何打开bmp文件? 10) 如何打开wav文件?

1.2软件功能概述

软件主要有以下几个主要功能

1) 用鼠标可以绘制图形,包括一下几种:直线,带箭头的线,任意线,圆形,椭圆,矩形。 2) 可以对画笔进行设置:画笔的颜色,画笔的线宽,画笔的形状。

3) 可以保存所有的图形到内存中,所有图形绘制后,拉动窗口发生重绘不改变。 4) 可以将所有绘制的图形保存到文件中,并且可以读取。 5) 可以“新建”空白绘图文档。 6) 可以查看最近打开的文档。

7) 可以打印用户绘制好后的图形,打印预览你绘制的图形。 8) 可以完成一部分的“撤消”功能,(注:任意曲线的图形绘制撤消不能实现) 9) 可以完成图形“清空”功能。 有以下几个次要功能 1) 有个软件启动画面。 2) 有个绘图工具栏。

3) 在状态栏可以显示鼠标的坐标和当前的时间。 4) 可以打开txt文本文件,并且修改字体。 5) 可以打开bmp图像文件,并且显示图像。 6) 可以打开wav音频文件,并且播放音乐。

第 页 共 页

广西工学院课程设计用纸

2.总体设计

本程序用的MFC中的单文档 文档/视图类结构。在视图类中完成图形的绘制,显示,重绘,清空,撤消,设置画笔,设置字体,打开txt,wav,bmp文件。在文档类保存了,绘制图形的各种数据,所有图形的点的坐标,画笔的信息。

3.详细设计

设计了保存图形的类 class CGraph : public CObject//派生于 CObject { //将CGraph串行话 需要5个步骤 //1.要派生于CObject类 //2.重新写void Serialize( CArchive& ar ) //3.正在头文件定义宏定义DECLARE_SERIAL( CGraphPoint ) //4.无参数的构造函数CGraph(); //5.在实现文件cpp中 使用宏定义DECLARE_SERIAL( CGraph,CObject,1/*类的版本号*/) DECLARE_SERIAL( CGraph ) //文档串行化的 宏定义DECLARE_SERIAL( CGraph ) public: void Serialize( CArchive& ar );//重新写Serialize函数 void Draw(CDC *pDC);//绘图的方法 UINT m_DrawIndex;//绘图的类型 CPoint m_FirstPoint;//起始坐标 CPoint m_SecondPoint;//结束坐标 COLORREF m_color; //颜色 UINT m_nLineWidth; //线宽 í int m_nLineStyle; //线形 CGraph(); CGraph(UINT DrawIndex,CPoint FirstPoint,CPoint SecondPoint,COLORREF color,UINT LineWidth,int LineStyle);//4个参数构造函数 virtual ~CGraph(); };

实现文件

IMPLEMENT_SERIAL( CGraph, CObject, 1 )

//文档串行化的 宏定义DECLARE_SERIAL( CGraph ) CGraph::CGraph() { }

CGraph::CGraph(UINT DrawIndex,CPoint FirstPoint,CPoint SecondPoint,COLORREF color,UINT LineWidth,int LineStyle) {//5??2?êyμ?11?ìoˉêy

第 页 共 页

广西工学院课程设计用纸

this->m_DrawIndex = DrawIndex; this->m_FirstPoint = FirstPoint; this->m_SecondPoint= SecondPoint; this->m_color = color; this->m_nLineStyle = LineStyle; this->m_nLineWidth = LineWidth; }

CGraph::~CGraph() { }

void CGraph::Draw(CDC *pDC) {//CGraphμ????-·?·¨ ?ù?Ym_DrawIndexμ?2?í? μ÷ó?2?í?μ??-·¨ CPen hpen(m_nLineStyle,m_nLineWidth,m_color); CBrush *pBrush = CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH)); CBrush *pOldBrush = pDC->SelectObject(pBrush); switch(m_DrawIndex) { case 1: pDC->SelectObject(&hpen); pDC->MoveTo(m_FirstPoint); pDC->LineTo(m_SecondPoint); break; case 2: break; case 3: { float flRlt; flRlt=(float)((m_FirstPoint.x-m_SecondPoint.x)*(m_FirstPoint.x-m_SecondPoint.x)+(m_FirstPoint.y-m_SecondPoint.y)*(m_FirstPoint.y-m_SecondPoint.y)); flRlt=sqrt(flRlt); if(flRlt == 0) return; float flLength = 15; float flAngle = 100;//éè??óD?ò?yí·μ????è float tmpX = (float)(m_SecondPoint.x) + ((float)(m_FirstPoint.x)-(float)(m_SecondPoint.x))*flLength/flRlt; float tmpY = (float)(m_SecondPoint.y) +

第 页 共 页

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库MFC绘图版 软件说明书在线全文阅读。

MFC绘图版 软件说明书.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/483644.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: