广西工学院课程设计用纸
广西工学院计算机工程系
《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绘图版 软件说明书在线全文阅读。
相关推荐: