简单画图程序课程设计报告全解
绘图程序 课程设计报告

绘图工具用户签名: 刘建开发成员:刘建开发时间:2010/12/17 学号:**********目录0引言 (3)1 工作计划 (3)1.1主要工作阶段划分 (3)1.2工作任务分工 (3)2需求分析 (4)2.1概述 (4)2.2用户分析 (4)2.3 约束条件 (4)2.4功能需求 (4)2.5用户界面需求 (5)3设计与实现 (5)3.1概述 (5)3.2详细设计 (5)3.1.1类的抽象及设计 (5)3.1.2表结构设计(涉及到数据库的题目需要完成该部分内容) (6)3.3 主要程序文件 (6)3.4开发环境以部署环境要求 (7)3.5 主要源码 (7)4.1概述 (7)4.2 测试环境 (10)4.3测试计划 (10)4.4测试项目及结果 (11)5、工作总结 (14)5.1工作成果 (14)5.2过程分析 (14)5.3经验教训及其分析 (15)0引言在日常生活中人们会经常绘图,而绘图工具提供给了人们一种便捷有效的绘图途径。
它不仅可以实现简单的绘图,如绘制直线、圆形、举行等,而且还可以对这些图形填充颜色。
并且可以根据个人爱好和实际需求自己设置画笔颜色以及画笔宽度。
该绘图工具界面简单清晰,使用简单方面,能满足很大一部分人的需求。
1 工作计划1.1主要工作阶段划分1.2工作任务分工2需求分析2.1概述本软件主要用于计算机windows 2000/XP以上版本的用户的使用,这次课程设计一般是实现绘图的功能。
程序除了能实现:绘制直线、圆形、矩形等图形外,还能实现对圆形、矩形等图形的填充等功能;程序还能实现清除界面所有图形、清除最近画的图等功能。
2.2用户分析普通用户看待一个软件的好坏主要是程序的实用性,界面的简洁美观性,程序所占资源的大小,以及程序运行期间的人性化的设置,所以要想让用户满意就要做到以上几点。
其中,这几点最重要的就是程序的实用性。
绘图工具,对于生活中的普通人来说,只要能实现简单的绘图,填充功能就行了。
c画图程序课程设计

c 画图程序课程设计一、教学目标本节课的教学目标是让学生掌握C语言的基本语法和操作,学会使用画图程序进行简单的图形绘制。
通过本节课的学习,学生能够理解C语言的基本概念,熟练使用画图程序进行图形设计,培养编程思维和动手能力。
具体来说,知识目标包括:1.了解C语言的基本语法和数据类型。
2.掌握画图程序的基本功能和操作。
技能目标包括:1.能够编写简单的C语言程序。
2.能够使用画图程序进行基本的图形绘制。
情感态度价值观目标包括:1.培养学生的编程兴趣,提高学习的积极性。
2.培养学生团队合作和解决问题的能力。
二、教学内容本节课的教学内容主要包括C语言的基本语法和画图程序的使用。
具体安排如下:1.C语言基本语法:数据类型、变量、运算符、控制语句等。
2.画图程序的使用:图形绘制、颜色设置、图形属性等。
教学过程中,将结合具体的案例和练习题,让学生在实际操作中掌握C语言的基本语法和画图程序的使用。
三、教学方法为了提高学生的学习兴趣和主动性,本节课将采用多种教学方法相结合的方式。
包括:1.讲授法:讲解C语言的基本语法和画图程序的使用方法。
2.案例分析法:分析具体的编程案例,让学生在实际操作中掌握知识。
3.实验法:让学生动手编写C语言程序,使用画图程序进行图形绘制。
通过多种教学方法的运用,激发学生的学习兴趣,提高学生的编程能力和动手能力。
四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将准备以下教学资源:1.教材:C语言程序设计基础。
2.参考书:C语言编程实例解析。
3.多媒体资料:C语言语法讲解视频、画图程序操作演示视频。
4.实验设备:计算机、画图程序软件。
通过以上教学资源的运用,帮助学生更好地理解和掌握C语言的基本语法和画图程序的使用,提高学生的学习效果。
五、教学评估本节课的教学评估将采取多元化的评估方式,以全面、客观、公正地评价学生的学习成果。
评估主要包括以下几个方面:1.平时表现:通过课堂参与、提问、回答问题等环节,评估学生的学习态度和积极性。
简易画图板设计报告分析

设计报告:Graphic简易画图板-----韩伟谢程焜肖越周峰电科二班1设计目的设计一个单文档类型的MFC AppWizard (exe)工程,工程取名为:Graphic。
此程序将实现简单的绘图功能,包括点、直线、矩形、椭圆、扇形和连续线的绘制。
并且能实现绘图的控制,包括线宽、线型和颜色的设置,图形的保存和打开以及笔刷的使用。
2 总体设计设计图如图6图63详细设计首先,新建一个单文档类型的MFC AppWizard (exe)工程,工程取名为:Graphic。
为此程序添加一个子菜单,菜单名称为“绘图”,并为其添加六个菜单项,分别用来控制不同图形的绘制。
当用户选择其中的一个菜单项后,程序将按照当前的选择进行相应图形的绘制。
添加的六个菜单项的ID及名称如表1所示。
然后分别为这六个菜单项添加命令响应,本程序让视类(CGraphicView)对这些菜单命令进行响应,这六个响应函数的名称分别如表1所示。
在程序运行以后,当用户单击某个菜单项时,应该把用户的选择保存起来,以便随后的绘图操作使用。
因此在CGraphicView类中添加一个私有变量m_nDrawType;用来保存用户的选择,该变量的定义如下所述:private: UINT m_nDrawType;接着,在视类的构造函数中将此变量初始化为0,程序代码如下:CGraphicView::CGraphicView(){// TODO: add construction code herem_nDrawType=0;}利用switch/case语句,来分别完成相应图形的绘制。
当用户选择【绘图】菜单下的不同子菜单项时,将变量m_nDrawType设置为不同的值。
程序代码如下:void CGraphicView::OnDot(){// TODO: Add your command handler code herem_nDrawType=1;}void CGraphicView::OnLine(){// TODO: Add your command handler code herem_nDrawType=2;}void CGraphicView::OnRectangle(){// TODO: Add your command handler code herem_nDrawType=3;}void CGraphicView::OnEllipse(){// TODO: Add your command handler code herem_nDrawType=4;}void CGraphicView::OnShanxing(){// TODO: Add your command handler code herem_nDrawType=5;}void CGraphicView::OnLianxuxian(){// TODO: Add your command handler code herem_nDrawType=6;}3.1点、直线、矩形、椭圆的绘制(周峰谢程焜)对于直线、矩形和椭圆,在绘制时都可有两点来确定其图形。
C++简单化图程序课程设计解析

目录1.基本功能描述 (1)2.设计思路 (1)2.1 设计思想 (1)2.2 设计流程图 (2)3.软件设计 (4)3.1 设计步骤 (4)3.2 界面设计 (11)3.3 关键功能的实现 (12)4. 结论与心得体会 (13)5. 思考题 (14)6.附录 (16)6.1调试报告 (16)6.2测试结果 (17)6.3关键源代码 (19)简单画图程序1.基本功能描述1)制作与用户交互性较好的应用程序界面,实现直线、椭圆、矩形的绘制,完成图形填充、线宽、线色的控制。
2)鼠标的左键按下同时拖动进行绘图,实时显示绘制的图形。
3)有橡皮擦和清屏的功能。
4)界面干净,简洁,实用,一目了然。
用户能通过界面快速了解软件的功能,人机交互性强。
2.设计思路2.1 设计思想1)编辑菜单项,将需要实现的功能编辑到绘图项下面,并对每一模块用分隔线隔开,对应的操作有:直线、矩形、圆;填充;线宽、线色、填充色;橡皮擦、清屏。
2)实现画图的具体操作,对直线、矩形、圆等相关按键关联变量,例如:直线关联变量为m_ZhiXian。
然后利用类向导建立消息响应函数,在消息响应函数中将对应的BOOL值赋值为TRUE,同时将其他变量的BOOL值赋值为FALSE。
实现只能对一种画图进行选择。
3)编写具体画图函数,初始化画笔画刷,根据其他按键的选择来画图,线宽可通过对话框直接输入值也可通过菜单中弹出的选项选择,线色及填充色通过系统已经拥有的颜色对话框选择。
4)通过鼠标左键按下,鼠标移动,鼠标左键弹起来获取坐标,通过坐标点以及相关图形函数画图。
2.2 设计流程图图1程序操作流程图3.软件设计3.1 设计步骤1)创建新工程打开VC++软件,按文件->新建->工程操作,选择MFC AppWizard(.exe)工程后缀。
在工程名一栏中填入工程名,创建新工程如图2所示。
图2创建新工程2)创建单文档应用程序建好新工程后再如下图显示的界面中选择单文档,单击完成表示其他默认选择。
画图程序设计报告(MFC)

Windows程序设计课程设计报告班级:计本08-1班姓名:X X学号:XXXXXXXXX指导老师:2010-11-29目录1 引言 (3)1.1 课题背景 (3)1.2 课程设计目的 (3)2 功能说明 (3)3 系统的实现 (4)3.1 视图设计 (4)3.2 编辑资源 (4)3.3 编程思路及各个函数的实现 (5)4程序功能的测试 (7)4.1测试的研究与选择 (7)4.2 测试环境 (7)5.3 实例测试结果 (7)5学习的总结 (9)6参考文献 (10)摘要:本课程设计实现的是画椭圆、矩形、直线和随手画功能等。
这个画图小程序实现了简单的画图功能,具有简洁大方的图文外观。
它的设计按软件工程的方法进行,系统具有良好的界面、必要的交互信息和简易的菜单进行操作。
即时准确地获得需要的画图的工具,适合休闲娱乐和简单的画画,对人们的生活有一定的帮助。
在课程设计中,系统开发平台为WindowsXP,程序设计设计语言采用Visual C++,在程序设计中,采用了结构化与面向对象两种解决问题的方法。
关键词:程序设计;画图;MFC;画图函数Ellipse()Restangle()1 引言1.1 课题背景本课程设计主要在生活中的娱乐,可以在本程序上进行简单的绘图娱乐。
画图是日常生活中有效的工具,能实现简单的画图。
本程序是在VC6.0中使用AppWizard创建基于对话框的应用程序。
1.2 课程设计目的画图的实现,通过C++语句实现。
在视图中实现画线功能,更好的了解MFC、C++等面向对象语言的设计和实现,运用自己所学的一些知识来实现其运用到现实的实践中,从而做到学而有用。
2 功能说明本程序可以实现的功能如下:1.运行程序后单击“编辑”菜单,选择“画矩形”后,用鼠标就可以在视图中画出一个矩形。
2.选择“画椭圆”,用鼠标就可以在视图中画出一个椭圆。
3.选择“画直线”,用鼠标就可以在视图中画出一条直线。
4.选择“随手画”,用鼠标就可以在试图中随手画画。
WHUT简单画图程序课程设计报告

目录1 基本功能描述 (1)2 设计思路 (1)3 软件设计 (3)3.1 设计步骤 (3)3.2 界面设计 (5)3.3 关键功能实现 (6)4 结论与心得体会 (7)5 参考文献 (7)6 思考题 (7)7 附录 (8)7.1 调试报告 (8)7.2 测试结果 (10)7.3 关键源代码 (11)简单画图程序1 基本功能描述1) 在菜单项中添加了两个菜单项——绘图和配色,在绘图菜单项下又有绘制直线,矩形,椭圆和铅笔的子菜单,还有橡皮擦,设置线宽和光标选择的功能;在配色菜单项下又有线色选择,填充色选择和填充功能。
2) 绘图前先选择绘图所用笔的颜色,所用填充图形的颜色,再点击线宽子菜单在弹出的对话框中输入线宽值然后选择要绘制的图形,若不设定则按默认值作图。
3) 以上准备工作做好后左击工作窗口则选定绘图的初始位置,拖动鼠标直到绘图完成后释放鼠标选定了所绘图形的终点,其中铅笔功能是一个涂鸦功能,可以再界面上绘出任何画面,橡皮擦功能擦出作图过程中的一些错误,可以通过改变线宽来改变橡皮擦的单位擦除块的大小从而提高擦除效率。
2 设计思路1) 设计之初需完成程序的基本功能,首先写出绘制直线,椭圆,矩形的函数,在类向导中定义鼠标的按下,移动,弹起的函数以完成上述图形的绘制,其次,要实现线色和填充色的设置;2) 在第一步的基础上在鼠标的按下函数中添加SetCapture()函数以获取鼠标的当前位置,在视图类的头文件中先得定义鼠标的初始位置和最终位置两个变量,然后用橡皮线作出实现图形的动态过程;3) 最终鼠标弹起时需调用ReleaseCapture()函数以确定终点坐标;4) 添加工具条对应直线,矩形,椭圆,铅笔和橡皮擦等功能;图1 程序流程图图2 子程序流程图3 软件设计3.1 设计步骤1)创建MFC类向导的单文档应用程序图3 创建以liuwenrui为工程名的工程图4 创建单文档2)设置菜单项根据需要在菜单项上实现的功能添加相应的菜单,若一个菜单下的子菜单太多可设置多个菜单,再分别在菜单下加入子菜单,如下图5,图6所示,我添加了两个菜单项,在每个分别设置了相应的子菜单。
c画图程序课程设计

c 画图程序课程设计一、课程目标知识目标:1. 学生能理解并掌握c语言中画图程序的基本概念和原理;2. 学生能够运用c语言的基本语法,编写简单的画图程序;3. 学生能够了解并使用c语言中的图形库,实现基本的图形绘制。
技能目标:1. 学生能够独立完成画图程序的编写和调试;2. 学生能够运用逻辑思维和问题解决能力,设计并实现简单的图形组合;3. 学生能够通过编写画图程序,提高编程实践能力和创新思维能力。
情感态度价值观目标:1. 学生对c语言编程产生兴趣,树立编程学习的自信心;2. 学生在编程实践中,培养团队合作精神和解决问题的耐心;3. 学生通过画图程序的创作,体验计算机编程的乐趣,提高对信息技术的认识。
课程性质:本课程为信息技术学科,以实践操作为主,注重培养学生的编程能力和逻辑思维能力。
学生特点:六年级学生,具备一定的计算机操作能力和c语言基础,对图形绘制感兴趣,喜欢动手实践。
教学要求:结合学生特点,注重理论与实践相结合,提高学生的编程技能和创新能力。
在教学过程中,关注学生的个体差异,给予个性化指导,确保每个学生都能达到课程目标。
通过课程学习,使学生能够独立完成简单的画图程序,为后续学习奠定基础。
二、教学内容1. c语言画图程序基本概念:介绍画图程序的概念,图形坐标系、图形库的调用方法;2. c语言基本语法复习:回顾变量、数据类型、运算符、控制语句等基本知识;3. 图形绘制函数:讲解并练习常用的图形绘制函数,如画点、画线、画圆等;4. 综合图形绘制:结合所学知识,设计并实现简单的组合图形;5. 画图程序实例分析:分析教材中的典型画图程序实例,讲解其编程思路和技巧;6. 创新设计:鼓励学生发挥创意,设计并实现自己的画图作品;7. 程序调试与优化:教授程序调试的方法,引导学生发现并解决编程过程中的问题。
教学大纲安排:第一课时:回顾c语言基本语法,介绍画图程序基本概念;第二课时:学习图形绘制函数,进行简单的图形绘制练习;第三课时:分析教材中的画图程序实例,讲解编程技巧;第四课时:综合运用所学知识,设计并实现组合图形;第五课时:创新设计,展示与分享学生的画图作品;第六课时:程序调试与优化,提高画图程序的运行效果。
简单画图程序课程设计报告分析

目录1 基本功能描述----------------------------------------------------------12 设计思路----------------------------------------------------------13 软件设计----------------------------------------------------------33.1 设计步骤----------------------------------------------------------33.2 界面设计----------------------------------------------------------73.3 关键功能实----------------------------------------------------------84. 附录----------------------------------------------------------94.1 调试报告----------------------------------------------------------94.2 测试结果----------------------------------------------------------104.3关键源代码---------------------------------------------------------105 结论与心得体会----------------------------------------------------------116. 参考文献----------------------------------------------------------117. 思考题----------------------------------------------------------11简单画图程序1 基本功能描述1) 在单文档菜单中,在菜单行中可插入一个菜单项,命名为绘图,在下拉菜单中可分别设置绘制的图形形状,如直线、矩形及椭圆,线宽选项,有1-5可供选择,还可以设置线色以及填充色,通过弹出的颜色对话框选择需要的颜色,如果不选择线宽、线色以及填充色,则按默认的画笔,画刷来绘制选择的图形。
实验报告简单绘图程序

实验三绘制图形一、实验目的学会JButton的使用,能进行JButton的基本操作,能使用JButton构造一个图形界面框架通过实验熟悉swing图形用户界面程序设计熟悉java中的事件处理模型,每个事件动作代表的意义进一步提高编程能力,学会独立思考,学会上网查找资料决问题。
二、实验内容设计一个程序,该程序能够绘制基本的图形(包括圆形、矩形、直线等);要求有一个简单易操作的用户界面(包括菜单、按钮等组件)。
编写的程序要求能够实现保存和读取的功能。
三、实验代码Main.javaimport ;import ;import ;importimportimportimport winpaint.WinToolBar;import winpaint.windowsPaint;public class Main {/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubJPanel paintWin = new windowsPaint("画图");paintWin.setBounds(0, 30, 1000, 1000);paintWin.setLayout(null);paintWin.setVisible(true);JToolBar tool = new WinToolBar((windowsPaint)paintWin);tool.setBounds(0, 0, 1000, 30);tool.setVisible(true);JFrame frame = new JFrame();frame.setLayout(null);frame.setVisible(true);frame.setBounds(0, 0, 1000, 1000);frame.add(tool);frame.add(paintWin);}}test.javaimport base.GrapicsElem;import base.Rect;public class testfractor {/*** @param args* @throws ClassNotFoundException*/public static void main(String[] args) throws ClassNotFoundException { // TODO Auto-generated method stubGrapicsElem Ge = new Rect();Class<> demo1=null;Class<> demo2=null;Class<> demo3=null;try{//一般尽量采用这种形式demo1=Class.forName("base.Rect");Class<> con= demo1.getSuperclass();demo2 = Class.forName("base.GrapicsElem");Class<> suns[] = demo2.getInterfaces();for (int i = 0; i < suns.length; i++) {}// GrapicsElem gg = (GrapicsElem)con[0].newInstance();con[0]);con[1]);con[2]);}catch(Exception e){e.printStackTrace();}demo2=new Rect().getClass();demo3=Rect.class;}}GrapicsElem.javapackage base;importimportimportpublic abstract class GrapicsElem {Point start;Point end;private Color color;public Color getColor() {return color;}public void setColor(Color color) {this.color = color;}public void setStart(Point start) {this.start = start;}public void setEnd(Point end) {this.end = end;}public abstract void doMousePress(Point p);public abstract void doMouseDrag(Point p);public abstract void doMouseRelease(Point p);public abstract void draw(Graphics g ) ;}Line.javapackage base;importimportimportpublic class Line extends GrapicsElem {ArrayList<Point> track;public Line(){track = new ArrayList<Point>();}@Overridepublic void draw(Graphics g) {for (int i = 0; i < track.size()-1; i++) {Point cur = track.get(i);Point next = track.get(i+1);g.drawLine(cur.x, cur.y, next.x, next.y);}}private void AddPoint(Point p){track.add(p);}@Overridepublic void doMousePress(Point p) {// TODO Auto-generated method stubAddPoint(p);}@Overridepublic void doMouseDrag(Point p) {// TODO Auto-generated method stubAddPoint(p);}@Overridepublic void doMouseRelease(Point p) {// TODO Auto-generated method stubAddPoint(p);}}Rect.javapackage base;importimportpublic class Rect extends GrapicsElem {int x,y,width,height;@Overridepublic void draw(Graphics g) {// TODO Auto-generated method stubg.drawRect(getX(), getY(), getWidth(), getHeight());}@Overridepublic void doMousePress(Point p) {super.setStart(p);super.setEnd(p);}@Overridepublic void doMouseDrag(Point p) {super.setEnd(p);}@Overridepublic void doMouseRelease(Point p) {super.setEnd(p);}public int getX() {return Math.min(start.x, end.x);}public int getY() {return Math.min(start.y, end.y);}public int getWidth() {return Math.abs(start.x-end.x);}public int getHeight() {return Math.abs(start.y-end.y);}}Circle.javapackage base;importpublic class Circle extends Rect {@Overridepublic void draw(Graphics g) {// TODO Auto-generated method stubg.drawOval(getX(), getY(), getWidth(), getHeight());}}windowsPaint.javapackage winpaint;import base.Circle;import base.GrapicsElem;import base.Line;import base.Rect;public class windowsPaint extends JPanelimplements MouseListener, MouseMotionListener {String command = "矩形";List<GrapicsElem> Lg = new ArrayList() ;GrapicsElem cur;JLabel label;public windowsPaint(String title){init();}private void init() {addMouseListener(this);addMouseMotionListener(this);}/*** 可以使用反射去掉判断语句、* Class<> g = Class.forName("base.Rect");* g.newInstance();* @return*/private GrapicsElem newInstance(){command = mand;if(command.equals("矩形")){return new Rect();}else if(command.equals("圆形")){return new Circle();}else if(command.equals("线")){return new Line();}return null;}@Overridepublic void paint(Graphics g) {// TODO Auto-generated method stubsuper.paint(g);Graphics2D g2d = (Graphics2D) g;//g2d.setColor(cur.getColor());g2d.setStroke(new BasicStroke(10.0f));for (int i = 0; i < Lg.size(); i++) {GrapicsElem ge = Lg.get(i);ge.draw(g);}}// @Override// public void repaint() {// // TODO Auto-generated method stub// // TODO Auto-generated method stub// //// super.repaint();//// Thread thread = new Thread(new Runnable() {//// @Override//// public void run() {//// // TODO Auto-generated method stub//// try {//// SaveToFile();//// } catch (IOException e) {//// // TODO Auto-generated catch block //// e.printStackTrace();//// }//// }//// });//// thread.start();//////// ImageIcon bg = new ImageIcon("tmp.jpg");//// if(bg!=null){//// if(label!=null)//// this.remove(label);//// label = new JLabel(bg);////label.setBounds(0,0,bg.getIconWidth(),bg.getIconHeight());//// this.add(label);//// super.repaint();//// }////// }private void SaveToFile() throws IOException {// TODO Auto-generated method stubBufferedImage bimg = new BufferedImage(this.getWidth(), this.getHeight(), BufferedImage.TYPE_3BYTE_BGR);Graphics2D g2d = bimg.createGraphics();this.paint(g2d);ImageIO.write(bimg, "jpg", new File("tmp.jpg"));}@Overridepublic void mousePressed(MouseEvent e) {Point p = new Point(e.getX(),e.getY());cur = newInstance();cur.doMousePress(p);Lg.add(cur);}@Overridepublic void mouseDragged(MouseEvent e) {Point p = new Point(e.getX(),e.getY());cur.doMouseDrag(p);repaint();}@Overridepublic void mouseReleased(MouseEvent e) {Point p = new Point(e.getX(),e.getY());cur.doMouseRelease(p);repaint();}@Overridepublic void mouseMoved(MouseEvent e) {// TODO Auto-generated method stub}@Overridepublic void mouseClicked(MouseEvent e) {// TODO Auto-generated method stub}@Overridepublic void mouseEntered(MouseEvent e) {// TODO Auto-generated method stub}@Overridepublic void mouseExited(MouseEvent e) {// TODO Auto-generated method stub}}WinToolBar.javapackage winpaint;public class WinToolBar extends JToolBar implements ActionListener{ public static String Command = "矩形";JButton btn1,btn2,btn3;//windowsPaint winp;public WinToolBar(windowsPaint winP ){btn1 = new JButton("矩形");btn2 = new JButton("圆形");btn3 = new JButton("线");this.add(btn1);this.add(btn2);this.add(btn3);btn1.addActionListener((ActionListener)this);btn2.addActionListener((ActionListener)this);btn3.addActionListener((ActionListener)this);// this.winp =winP;JComboBox com = new JComboBox();com.addItem("红色");com.addItem("蓝色");com.addItem("黑色");com.addItemListener(new ItemListener() {@Overridepublic void itemStateChanged(ItemEvent e) {// TODO Auto-generated method stub}});this.add(com);}@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubJButton btn = (JButton) e.getSource();btn.setBackground(Color.green);Command = btn.getActionCommand();}}三、实验结果。
计算机图形学课程设计报告简单图形的绘制

《计算机图形学》课程设计报告学生:学号:学院:班级:题目: 简单图形的绘制职称2015年7月1日目录目录 (I)一、选题背景 (1)二、算法设计 (2)2.1 绘制直线、圆、椭圆、抛物线 (2)2.1.1 绘制直线 (2)2.1.2 绘制圆 (2)2.1.3 绘制椭圆 (2)2.1.4 绘制抛物线 (2)2.2 三维几何变换 (2)三、程序及功能说明 (5)3.1 绘制直线、圆、椭圆、抛物线 (5)3.1.1 绘制直线 (5)3.1.2 绘制圆 (5)3.1.3 绘制椭圆 (6)3.1.4 绘制抛物线 (6)3.2 图形的平移 (6)3.3 图形的旋转 (7)3.4 图形的缩放 (7)四、结果分析 (8)4.1 绘制直线、圆、椭圆、抛物线 (8)4.1.1 直线 (8)4.1.2 圆 (8)4.1.3 椭圆 (9)4.1.4 抛物线 (9)4.2 图形的平移 (9)4.3 图形的旋转 (10)4.4 图形的缩放 (12)五、总结 (11)六、课程设计心得体会 (15)参考文献 (16)源程序 (17)一、选题背景二、算法设计2.1 绘制直线、圆、椭圆、抛物线2.1.1 绘制直线通过两个点的坐标来绘制直线。
计算机图形学中二维图形在显示输出之前需要扫描转换,生成直线的算法一般有DDA 算法和中点算法。
2.1.2 绘制圆通过运用圆的参数方程cos ;sin x a r y b r θθ=+=+来绘制圆的图形,其中[0,2]θπ∈,(a,b )为圆心,r 为半径,运用参数方程,只需要确定半径的长度和圆心的位置,即可绘制出圆。
2.1.3 绘制椭圆通过运用椭圆的参数方程cos ;sin x a y b θθ==来绘制椭圆的图形,其中[0,2]θπ∈,是已知的变量,a ,b 分别为长半轴,短半轴,当确定a 和b 后,通过参数方程即可得到这个椭圆的方程。
2.1.4 绘制抛物线根据点绘制抛物线图像是通过拟合完成,根据三个点的坐标,通过数据拟合,得到经过这三个点的函数关系式,从而再根据这个函数关系式绘制出抛物线上其他的点,形成一条连续的抛物线;或直接根据已知函数绘制图像是通过已知函数画出图像。
简单画图程序课程设计

简单画图程序 课程设计一、课程目标知识目标:1. 学生能够理解简单画图程序的基本概念和原理,掌握画图程序的基本操作。
2. 学生能够描述并运用画图程序中的绘图工具和功能,如线条、图形、颜色填充等。
3. 学生能够掌握画图程序中的图层概念,并运用图层进行作品的创作。
技能目标:1. 学生能够运用画图程序独立创作简单的图形作品,展示自己的创意和想象力。
2. 学生能够熟练使用画图程序的绘图工具,进行基本的绘图操作和编辑功能。
3. 学生能够通过画图程序的实践操作,培养观察力、空间思维能力和动手能力。
情感态度价值观目标:1. 学生对画图程序产生兴趣,积极参与课程学习,主动探索和创作。
2. 学生在创作过程中,培养自信心和耐心,学会坚持和克服困难。
3. 学生能够与他人分享自己的作品,学会欣赏和尊重他人的创作,培养团队合作意识和审美观念。
课程性质:本课程为信息技术课程,结合画图程序的实用性和趣味性,旨在培养学生的计算机操作能力和创造力。
学生特点:学生处于小学高年级阶段,对计算机操作有一定的基础,好奇心强,喜欢动手实践。
教学要求:课程设计要注重理论与实践相结合,以学生为主体,教师引导和辅导,鼓励学生主动探索和创作,培养其信息技术素养和创新能力。
通过具体的学习成果评估,确保课程目标的达成。
二、教学内容1. 画图程序基础知识:- 介绍画图程序的概念和作用。
- 学习画图程序的操作界面和工具栏。
2. 绘图工具的使用:- 线条工具:学习如何绘制直线、曲线等。
- 形状工具:掌握绘制矩形、圆形、三角形等基本图形的方法。
- 颜色填充工具:学习如何为图形填充颜色。
3. 图层管理:- 了解图层概念,学习图层的添加、删除和调整顺序。
- 掌握图层透明度和锁定功能的使用。
4. 作品创作:- 创作简单的图形作品,如卡通人物、风景等。
- 结合所学工具和功能,进行创意作品的绘制。
5. 教学大纲安排:- 第一课时:画图程序基础知识,认识操作界面和工具栏。
绘图程序 课程设计报告

绘图工具用户签名: 刘建开发成员:刘建开发时间:2010/12/17 学号:**********目录0引言 (3)1 工作计划 (3)1.1主要工作阶段划分 (3)1.2工作任务分工 (3)2需求分析 (4)2.1概述 (4)2.2用户分析 (4)2.3 约束条件 (4)2.4功能需求 (4)2.5用户界面需求 (5)3设计与实现 (5)3.1概述 (5)3.2详细设计 (5)3.1.1类的抽象及设计 (5)3.1.2表结构设计(涉及到数据库的题目需要完成该部分内容) (6)3.3 主要程序文件 (6)3.4开发环境以部署环境要求 (7)3.5 主要源码 (7)4.1概述 (7)4.2 测试环境 (10)4.3测试计划 (10)4.4测试项目及结果 (11)5、工作总结 (14)5.1工作成果 (14)5.2过程分析 (14)5.3经验教训及其分析 (15)0引言在日常生活中人们会经常绘图,而绘图工具提供给了人们一种便捷有效的绘图途径。
它不仅可以实现简单的绘图,如绘制直线、圆形、举行等,而且还可以对这些图形填充颜色。
并且可以根据个人爱好和实际需求自己设置画笔颜色以及画笔宽度。
该绘图工具界面简单清晰,使用简单方面,能满足很大一部分人的需求。
1 工作计划1.1主要工作阶段划分1.2工作任务分工2需求分析2.1概述本软件主要用于计算机windows 2000/XP以上版本的用户的使用,这次课程设计一般是实现绘图的功能。
程序除了能实现:绘制直线、圆形、矩形等图形外,还能实现对圆形、矩形等图形的填充等功能;程序还能实现清除界面所有图形、清除最近画的图等功能。
2.2用户分析普通用户看待一个软件的好坏主要是程序的实用性,界面的简洁美观性,程序所占资源的大小,以及程序运行期间的人性化的设置,所以要想让用户满意就要做到以上几点。
其中,这几点最重要的就是程序的实用性。
绘图工具,对于生活中的普通人来说,只要能实现简单的绘图,填充功能就行了。
简单的绘图程序实验报告

面向对象程序设计实训(基于MFC程序设计)题目: 简单的绘图程序院系专业:姓名:学号:同组其他学生(学号):简单绘图程序说明1、功能分析目前这个软件的主要功能有如下:1、画直线:通过OnLine()函数实现。
2、画矩形:通过OnRectangle()函数实现。
3、画圆角矩形:通过OnRoundrect()函数实现。
4、画椭圆:通过OnEllipse()函数实现。
5、铅笔工具:可以画任意线条。
通过直接在OnMouseMove(UINT nFlags, CPointpoint)函数里面添加代码实现。
6、右键弹出菜单:可以在客户中点击鼠标右键,快速选择常用菜单。
通过OnContextMenu函数实现。
7、状态栏显示鼠标移动的坐标:在程序的右下角显示,通过调用setWidnowText和GetParent()实现。
8、画图颜色选择:可以画任何颜色的线条,通过OnColor()函数实现。
9、线条类型及线宽的设置:可以将画出的线条设置成实线、虚线、点线、点划线,双点划线,还可以设置线条的粗细,,通过实例这一功能立刻显示所选择线条的粗细及线型。
通过新建CLineSettingDlg类,其中OnSelchangeLineStyle()函数实现线型的改变,OnChangeEditLineWidth()函数实现线宽的改变。
再在CDrawView类中调用OnLineSetting()函数实现画笔的对话框,CLineSettingDlg类中的OnPaint()函数是实现示例功能的。
10、窗口的重绘时不擦除原来的内容:新建CShape类用来保存线条的颜色,线宽,填充色等属性,在窗口大小发生变化时有OnDraw(CDC* pDC)函数进行重绘工作,重绘中调用了各个绘图函数的Draw(CDC *pDC)函数。
11、所绘图形的保存于读取,通过Serialize(CArchive &ar)函数进行序列化操作,将所绘图形的信息通过文件的形式保存起来。
简单画图程序课程设计说明书

目录1基本功能描述..................................................................................................................... - 1 -2设计思路............................................................................................................................. - 1 -3软件设计............................................................................................................................. - 3 -3.1设计步骤 .................................................................................................................. - 3 -3.2界面设计 .................................................................................................................. - 6 -3.3关键功能的实现 ...................................................................................................... - 6 -4结论与心得体会................................................................................................................. - 8 -5参考文献........................................................................................................................... - 10 -6思考题............................................................................................................................... - 10 -7附录................................................................................................................................... - 11 -7.1调试报告 ................................................................................................................ - 11 -7.2测试结果 ................................................................................................................ - 12 -7.3关键源代码 ............................................................................................................ - 14 -简单画图程序1基本功能描述简单画图程序实现了常见图形的绘制、图形属性的设置和图形数据的暂存等功能。
简易绘图c课程设计

简易绘图c 课程设计一、课程目标知识目标:1. 学生能理解简易绘图c软件的基本功能与操作界面。
2. 学生能掌握绘图c软件中的基本绘图工具使用方法,如线条、图形、颜色填充等。
3. 学生能了解并运用基本的图形变换,如平移、旋转、缩放等。
技能目标:1. 学生能够运用绘图c软件,独立完成基本图形的绘制与编辑。
2. 学生能够通过软件操作,将想象中的图形创意实现出来,培养其创新实践能力。
3. 学生能够运用所学知识,解决简单的实际问题,如制作简笔画、图标设计等。
情感态度价值观目标:1. 培养学生对信息技术的兴趣,激发其学习简易绘图c软件的热情。
2. 培养学生耐心细致、团结协作的学习态度,使其在团队协作中发挥积极作用。
3. 培养学生的审美观念,提高其对美的感知力和创造力。
课程性质:本课程为信息技术学科,以实践操作为主,注重培养学生的动手能力和创新思维。
学生特点:学生年级为小学四年级,对新鲜事物充满好奇,动手能力强,但注意力集中时间较短。
教学要求:教师应以引导为主,注重激发学生兴趣,鼓励学生主动探索与实践,培养其解决问题的能力。
同时,关注学生的个别差异,给予个性化的指导与帮助。
通过课程目标的实现,使学生在知识、技能和情感态度价值观方面取得具体的学习成果。
二、教学内容1. 简易绘图c软件的认识与操作界面熟悉:- 界面布局及功能介绍- 常用工具栏的认识与使用2. 基本绘图工具的使用:- 线条、图形的绘制- 颜色填充与选择- 图形编辑与修改3. 基本图形变换:- 平移、旋转、缩放的操作方法- 变换工具的应用实例4. 创意绘图实践:- 简笔画创作- 图标设计与制作- 结合实际生活的创意绘图案例5. 团队协作与作品展示:- 分组讨论与协作- 作品展示与评价- 优秀作品分享与交流教学内容依据课程目标,参照教材相关章节进行组织与安排。
在教学过程中,注重理论与实践相结合,以学生实践操作为主,引导学生逐步掌握简易绘图c 软件的使用。
C++简单画图程序课设

目录1.基本功能描述 ....................................................................................................... - 1 -2.设计思路 ............................................................................................................... - 1 -3.软件设计 ............................................................................................................... - 4 -3.1 设计步骤 .................................................................................................... - 4 -3.2 界面设计 .................................................................................................... - 9 -3.3 关键功能的实现 ........................................................................................ - 9 -4.结论与心得体会 ................................................................................................. - 10 -5.参考文献 ............................................................................................................. - 11 -6.思考题 ................................................................................................................. - 11 -7.附录 ..................................................................................................................... - 12 -7.1 调试报告 .................................................................................................. - 12 -7.2 测试结果 .................................................................................................. - 13 -7.3 关键源代码 .............................................................................................. - 15 -简单画图程序1.基本功能描述1)设计一个程序可完成绘制直线,矩形和椭圆的功能。
python画图程序课程设计

python画图程序课程设计一、教学目标本课程的学习目标旨在让学生掌握Python基本画图程序的编写方法,培养学生的编程思维和实际操作能力。
具体目标如下:1.知识目标:使学生了解Python画图程序的基本概念和原理,包括turtle库的使用方法,以及基本绘图函数如circle()、dot()等。
2.技能目标:培养学生能够运用Python编写简单的画图程序,如绘制图形、绘制函数图像等。
同时,培养学生能够通过查阅资料和文档,自主学习和解决问题的能力。
3.情感态度价值观目标:培养学生对计算机编程的兴趣,增强其对科学和技术的热爱,培养其创新精神和团队合作意识。
二、教学内容本课程的教学内容主要包括以下几个部分:1.Python画图程序的基本概念和原理,如turtle库的使用方法。
2.基本绘图函数的学习,如circle()、dot()等。
3.典型画图程序的编写和分析,如绘制图形、绘制函数图像等。
4.实际操作练习,让学生通过编写程序,实现自己的创意画图。
三、教学方法本课程的教学方法主要包括讲授法、案例分析法和实验法。
1.讲授法:用于讲解Python画图程序的基本概念、原理和绘图函数。
2.案例分析法:通过分析典型画图程序,让学生了解实际应用中如何运用Python进行画图。
3.实验法:让学生动手编写程序,进行实际操作,培养其实际操作能力和解决问题的能力。
四、教学资源本课程的教学资源主要包括以下几个部分:1.教材:Python编程基础教材,用于为学生提供理论知识的学习。
2.参考书:Python画图程序相关书籍,用于为学生提供更多的学习资料。
3.多媒体资料:包括教学PPT、视频教程等,用于为学生提供生动、直观的学习资源。
4.实验设备:计算机、投影仪等,用于进行实验教学,让学生动手实践。
五、教学评估为了全面、客观地评估学生的学习成果,本课程将采用多种评估方式,包括平时表现、作业、考试等。
1.平时表现:通过学生在课堂上的参与度、提问回答、小组讨论等表现,评估其对课程内容的理解和掌握程度。
画图程序c课程设计

画图程序c 课程设计一、教学目标本课程的目标是让学生掌握画图程序C的基本知识和技能,能够运用画图程序C进行简单的图形绘制和处理。
具体目标如下:知识目标:1. 了解画图程序C的基本概念和原理;2. 掌握画图程序C的基本语法和操作;3. 了解画图程序C的应用领域。
技能目标:1. 能够使用画图程序C编写简单的图形绘制程序;2. 能够使用画图程序C进行基本的图形处理和动画制作;3. 能够根据实际需求,运用画图程序C进行图形设计和创新。
情感态度价值观目标:1. 培养学生的编程兴趣和自信心,提高学生的自主学习能力;2. 培养学生的问题解决能力和创新思维,使学生能够运用画图程序C解决实际问题;3. 培养学生对计算机科学的热爱,提高学生的专业素养。
二、教学内容本课程的教学内容主要包括画图程序C的基本概念、基本语法和操作、应用领域等方面。
具体安排如下:第1-2课时:画图程序C的基本概念和原理,包括图形的基本概念、坐标系、颜色和线型等;第3-4课时:画图程序C的基本语法和操作,包括基本图形绘制函数、图形属性设置、图形变换等;第5-6课时:画图程序C的应用领域,包括简单动画制作、图形处理等;第7-8课时:综合练习和拓展,包括实际案例分析、创新图形设计等。
三、教学方法本课程的教学方法采用讲授法、案例分析法和实验法相结合的方式。
通过讲授法,使学生了解画图程序C的基本概念和原理;通过案例分析法,使学生掌握画图程序C的基本语法和操作;通过实验法,使学生能够实际操作画图程序C,进行图形绘制和处理。
四、教学资源本课程的教学资源包括教材、参考书、多媒体资料和实验设备等。
教材主要包括《画图程序C入门教程》等;参考书主要包括《画图程序C编程实例解析》等;多媒体资料包括教学PPT、视频教程等;实验设备包括计算机、绘图板等。
以上教学资源将用于支持教学内容和教学方法的实施,丰富学生的学习体验。
五、教学评估本课程的评估方式包括平时表现、作业和考试三个部分,以全面客观地评价学生的学习成果。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录1 基本功能描述----------------------------------------------------------22 设计思路----------------------------------------------------------23 软件设计----------------------------------------------------------43.1 设计步骤----------------------------------------------------------43.2 界面设计----------------------------------------------------------83.3 关键功能实----------------------------------------------------------94. 附录----------------------------------------------------------94.1 调试报告----------------------------------------------------------94.2 测试结果----------------------------------------------------------104.3关键源代码---------------------------------------------------------125 结论与心得体会----------------------------------------------------------116. 参考文献----------------------------------------------------------117. 思考题----------------------------------------------------------11简单画图程序1 基本功能描述1) 在单文档菜单中,在菜单行中可插入一个菜单项,命名为绘图,在下拉菜单中可分别设置绘制的图形形状,如直线、矩形及椭圆,线宽选项,有1-5可供选择,还可以设置线色以及填充色,通过弹出的颜色对话框选择需要的颜色,如果不选择线宽、线色以及填充色,则按默认的画笔,画刷来绘制选择的图形。
2) 选择好图形后,通过鼠标可以绘制出相应的直线,矩形或椭圆,鼠标的按下确定图形的起点,鼠标的拖动则确定了图形的终点,即通过鼠标的拖动来决定图形的大小,当鼠标弹起,此图形则绘制完毕。
3) 增添工具栏,设置绘制的图形形状,线色以及填充色,可更方便地选择相应的功能。
2 设计思路1) 对需要用到的变量进行初始化。
2) 选择相应的图形之后就响应相应的消息处理函数,给shape赋对应的值。
选择不同的线宽,线色与填充色,即可改变画笔或画刷的属性。
3) 鼠标的按下响应函数OnLButtonDown(),捕捉鼠标当前位置得到起点的坐标,鼠标的拖动响函数OnMouseMove()改变终点的坐标,鼠标的弹起响应OnLButtonUp(),确定终点坐标,刷新,得到绘制图形。
4) 选择图形或其它属性,可进行下一次绘制。
图1 程序流程图3 软件设计3.1 设计步骤1)创建单文档创建一个MFC AppWizard[exe]工程,命名为“yinshuyan”,如图1所示,并创建单文档,如图2所示。
创建成功后,系统自动生成相应的类,如图3所示。
图2 创建工程图3 创建单文档2)编辑菜单添加需要的菜单项,如图4所示;并在菜单的属性中设定好所对应的ID,如图5所示,各项菜单对应的ID如表1所示(其中线宽菜单为弹出菜单,只需在菜单项目属性中的弹出选项前打勾即可,分隔线亦只需在菜单项目属性中选中分隔符选项即可)。
图5 添加菜单项图6 设置菜单ID表1 菜单项对应ID建立类向导,在视图类CyinshuyanView中,对各菜单项添加对应的COMMAND消息处理函数,部分菜单项还添加对应的UPDATE_COMMAND_UI消息函数,如图6所示。
图7 建立类向导3)创建工具栏在插入处选择资源,新建工具栏,如图7所示;在工具栏上添加相应的按钮,在属性处更改其ID,如图8所示。
图9 编辑工具栏4)在相应消息函数处添加代码,实现其功能建立类向导,在视图类CyinshuyanView中,添加WM_PAINT消息,以及WM_LBUTTONDOWN、WM_LBUTTONUP、WM_MOUSEMOVE消息,并在其中添加相应的代码,如图9所示。
图10 添加WM_PAINT消息3.2 界面设计各控件名称,类型,属性及相关变量如表2所示。
3.3 关键功能实现1)选择要绘制的图形在直线、矩形以及椭圆的消息处理函数里为shape分别赋值为1,2,3,在OnPaint()函数里添加3个if语句的代码来这实现这三个图形的绘制:当选择画直线时,shape=1,则执行绘制直线代码,当选择画矩形时,shape=2,则执行绘制矩形的代码,当性选择画椭圆时,shape=3,则执行绘制椭圆的代码。
2)改变线宽在OnPaint()创建的画笔中,pen.CreatePen(PS_SOLID,w, m_nColor),线宽处用w表示,则改变w的值即改变了画笔的粗细。
选择菜单绘图→线宽选择划线宽度值,此时所选的线宽值就赋给线宽变量w。
若不选择线宽值,则w=1(即默认线宽值为1)。
3)改变线色在OnPaint()创建的画笔中,pen.CreatePen(PS_SOLID,w, m_nColor),线的颜色处用m_nColor表示,则改变m_nColor即改变了画笔的颜色。
选择菜单绘图→颜色,会弹出通过WM_COLORREF从系统中引入的颜色选择对话框,选择颜色后,点击确定则相应颜色值就赋给变量m_nColor,此时画笔的颜色就会发上变化。
若不选择颜色,则默认(线)颜色为黑色。
4)改变填充色在OnPaint()创建的画刷中,brush.CreateSolidBrush(m_fColor),颜色就是用m_fColor 表示的,改变m_fColor即改变了画刷的颜色。
选择菜单绘图→填充色,会弹出通过WM_COLORREF从系统中引入的颜色选择对话框,选择颜色后,点击确定则相应颜色值就赋给变量m_fColor,此时画刷的颜色就会发上变化。
若不选择颜色,则默认填充色为黑色。
5)绘制图形鼠标左键按下,则捕获鼠标此时的位置坐标为画图的起点,此时在OnLButtonDown()函数里,将捕获的坐标值赋给定义作为起点的变量opoint;按下鼠标左键拖动鼠标时,捕捉鼠标当前位置坐标值为终点坐标值,此时在OnMouseMove()函数里,把捕获的坐标值赋给定义作为终点的变量cpoint,OnPaint()中绘图的代码中的坐标都得到了,进行绘图;鼠标左键弹起时,此时绘图结束,鼠标弹起时所在位置就是画图的最终终点位置,画图结束后,刷新窗口,以便重新画图,此时执行的是OnLButtonUp()函数。
图11 快捷键的创建4. 附录4.1 调试报告1)一开始我并没有添加刷新函数Invalidate(),这就使程序运行之后,无论鼠标左键按下时如何移动无法绘图,这是因为当一个窗口内键入内容其实就是将窗口刷新了,相当于更新了窗口,故必须有刷新函数,这和生活中的白纸写字不一样。
2)当添加Invalidate()后,我把Invalidate()放在OnMouseMove()里,但是这样只能在窗口内画一个图形,即每画完一个图形就刷新一次。
之后我通过与同学讨论,并查找资料将Invalidate()改为了Invalidate(0),这时是可绘制多个图形,但鼠标每移动一个位置都进行一次刷新,绘图结束后,绘图过程中的所有痕迹都在,产生了很多拖动的影子。
,经过几次试验,我将Invalidate(0)放在了OnLButtonUp()中,那么每次重绘,上次的图形会作为背景被保留下来,而不会被刷新掉。
4.2 测试结果1)点击链接,编译,运行后的窗口如图11所示。
图11 运行结果2)改变绘制图形形状,颜色,线宽,填充色之后绘制的图形如图12所示。
图12 改便各项属性厚后的图形4.3 关键源代码1)在“MainFrm.h”中,在class CMainFrame : public CFrameWnd里的protected下定义:CToolBar m_drawToolBar; //工具栏2)在“MainFrm.cpp”中,在CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)里添加以下代码:if (!m_drawToolBar.Create(this) ||!m_drawToolBar.LoadToolBar(IDR_DRAW)){ TRACE0("Failed to create status bar\n");return -1;}3)在“YinshuyanView.h”中,在class CYinshuyanView : public CView里的public下定义相关变量:COLORREF m_nColor;COLORREF m_fColor;CPoint cpoint;CPoint opoint;BOOL m_Down;int w;int shape;4)在“YinshuyanView.cpp”中,添加如下函数及代码:CYinshuyanView:: CYinshuyanView(){ w=1; //初始线宽默认为1shape=0;}void CYinshuyanView::OnW1(){w=1; //令线宽为1}void CYinshuyanView::OnW2(){w=2; //令线宽为2}void CYinshuyan::OnW3(){w=3; //令线宽为3}void CYinshuyanView::OnW4(){w=4; //令线宽为4}void CYinshuyanView::OnW5(){w=5; //令线宽为5}void CYinshuyanView::OnUpdateW1(CCmdUI* pCmdUI){pCmdUI->SetRadio(w==1); //当线宽为1时,此选项前标有圆点}void CYinshuyanView::OnUpdateW2(CCmdUI* pCmdUI){pCmdUI->SetRadio(w==2); //当线宽为2时,此选项前标有圆点}void CYinshuyanView::OnUpdateW3(CCmdUI* pCmdUI){pCmdUI->SetRadio(w==3); //当线宽为3时,此选项前标有圆点}void CYinshuyanView::OnUpdateW4(CCmdUI* pCmdUI){pCmdUI->SetRadio(w==4);}void CYinshuyanView::OnUpdateW5(CCmdUI* pCmdUI){pCmdUI->SetRadio(w==5);}void CYinshuyanView::OnLine(){shape=1; //选择直线,则令shape为1}void CYinshuyanView::OnRect(){shape=2; //选择矩形,则令shape为2}void CYinshuyanView::OnEllipse(){shape=3; //选择椭圆,则令shape为3}void CYinshuyanView::OnUpdateLine(CCmdUI* pCmdUI){pCmdUI->SetCheck(shape==1); //shape为1时,直线选项前打上勾}void CYinshuyanView::OnUpdateRect(CCmdUI* pCmdUI){pCmdUI->SetCheck(shape==2); //shape为2时,矩形选项前打上勾}void CYinshuyanView::OnUpdateEllipse(CCmdUI* pCmdUI){pCmdUI->SetCheck(shape==3); //shape为3时,椭圆选项前打上勾}void CYinshuyanView::OnColor(){CColorDialog Color; // 创建颜色对话框if(Color.DoModal() == IDOK) // 如果用户点击OK按钮m_nColor=Color.GetColor(); // 更改颜色,把颜色赋到m_nColor }void CYinshuyanView::OnFullColor(){CColorDialog FullColor; // 创建颜色对话框if(FullColor.DoModal() == IDOK) // 如果用户点击OK按钮m_fColor=FullColor.GetColor(); // 更改颜色,把颜色赋到m_fColor }void CYinshuyanView::OnPaint(){CPaintDC dc(this); // device context for paintingCPen pen; //定义画笔CBrush brush; //定义画刷pen.CreatePen(PS_SOLID,w, m_nColor); //创建画笔brush.CreateSolidBrush(m_fColor); //创建画刷dc.SelectObject(&pen); //获取画笔dc.SelectObject(&brush); //获取画刷if(shape==1){dc.MoveTo(opoint.x,opoint.y);dc.LineTo(cpoint.x,cpoint.y);} //绘制直线,从opoint到cpoint连线if(shape==2)dc.Rectangle(opoint.x,opoint.y,cpoint.x,cpoint.y); //绘制矩形if(shape==3)dc.Ellipse(opoint.x,opoint.y,cpoint.x,cpoint.y); //绘制椭圆}void CYinshuyanView::OnLButtonDown(UINT nFlags, CPoint point) {// TODO: Add your message handler code here and/or call defaultm_Down=TRUE; //鼠标按下SetCapture(); //获取坐标opoint=point; //把鼠标所在坐标赋给起点坐标opointReleaseCapture(); //释放坐标CView::OnLButtonDown(nFlags, point);}void CYinshuyanView::OnMouseMove(UINT nFlags, CPoint point){if(m_Down) //如果鼠标按下cpoint=point; //把鼠标所在点坐标赋给终点坐标cpointCView::OnMouseMove(nFlags, point);}void CYinshuyanView::OnLButtonUp(UINT nFlags, CPoint point){m_Down=FALSE; //鼠标不按下,即弹起Invalidate(0); //刷新CView::OnLButtonUp(nFlags, point);}5 结论与心得体会这次课程设计我成功的完成了。