C++课设:简单画图程序
- 格式:doc
- 大小:214.50 KB
- 文档页数:29
c 画图工具课程设计一、教学目标本课程的学习目标包括:知识目标:学生能够理解并掌握C画图工具的基本概念、功能和使用方法。
技能目标:学生能够运用C画图工具进行简单的图形绘制和编辑,以及基本的图像处理操作。
情感态度价值观目标:学生能够体验到C画图工具在学习和生活中的实用性和趣味性,激发对计算机绘图的兴趣和热情。
通过本课程的学习,学生将能够掌握C画图工具的基本操作,培养观察力、创造力和表达能力,提高信息素养,为今后的学习和工作打下坚实的基础。
二、教学内容本课程的教学内容主要包括:1.C画图工具的基本概念和界面布局;2.基本图形的绘制和编辑方法;3.图像处理操作,如颜色填充、线条设置、字体设置等;4.实例练习,运用C画图工具进行实际操作,培养学生的实际应用能力。
教学内容将按照教材的章节安排进行,确保内容的科学性和系统性。
三、教学方法本课程将采用以下教学方法:1.讲授法:讲解C画图工具的基本概念、功能和使用方法;2.案例分析法:分析实际案例,引导学生运用C画图工具进行图形绘制和编辑;3.实验法:学生动手实践,进行实际操作,培养实际应用能力;4.讨论法:学生进行小组讨论,分享学习心得和经验,互相促进。
通过多样化的教学方法,激发学生的学习兴趣和主动性,提高学生的观察力、创造力和表达能力。
四、教学资源本课程将选择和准备以下教学资源:1.教材:选用权威、实用的C画图工具教材,作为学生学习的主要参考资料;2.参考书:提供相关的参考书籍,丰富学生的学习视野;3.多媒体资料:制作精美的PPT、视频等多媒体资料,生动展示C画图工具的使用方法;4.实验设备:准备计算机、绘图板等实验设备,确保学生能够进行实际操作。
教学资源将根据教学内容和教学方法的实施需要进行选择和准备,以支持学生的学习体验,提高教学效果。
五、教学评估本课程的评估方式包括:1.平时表现:评估学生的课堂参与度、提问回答、小组讨论等,以考察学生的学习态度和积极性。
简单画图程序-课程设计目录1. 基本功能描述 ............................................................. 1 2. 设计思路 .................................................................1 3. 软件设计 (3)3.1 设计步骤 (3)3.2 界面设计 (6)3.3 关键功能的实现 ...................................................... 7 4. 结论与心得体会 ........................................................... 8 5. 参考文献 ................................................................. 9 6. 思考题 (9)7. 附录 .....................................................................97.1 调试报告 (9)7.2 测试结果 (10)7.3 关键源代码 (1)武汉理工大学《专业课程设计2(面向对象程序设计)》课程设计说明书简单画图程序1. 基本功能描述1) 在菜单处的有相应的菜单项,可以选择绘制的图形形状,如直线、矩形及椭圆,可-5可供选择,还可以选择线色以及填充色,通过弹出的颜色对话框选择以选择线宽,有1需要的颜色,如果不选择线宽、线色以及填充色,则按默认的画笔以及画刷来绘制选择的图形。
2) 选择好图形后,通过鼠标可以绘制出相应的直线,矩形或椭圆,鼠标的按下确定图形的起点,鼠标的拖动则确定了图形的终点,即通过鼠标的拖动来决定图形的大小,鼠标弹起,此图形则绘制完毕。
3) 增添了工具栏,有相应的选择项,可以更方便地实现相应的功能。
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.平时表现:通过课堂参与、提问、回答问题等环节,评估学生的学习态度和积极性。
c语言课程设计画图一、教学目标本课程的目标是让学生掌握C语言的基本知识,通过编程实践学会用C语言进行简单的图形绘制。
具体分为以下三个部分:1.知识目标:使学生了解C语言的基本语法、数据类型、运算符、控制结构等,并掌握基本的图形绘制原理。
2.技能目标:培养学生使用C语言进行图形编程的能力,能独立完成简单的图形绘制程序。
3.情感态度价值观目标:培养学生对计算机科学的兴趣,提高其动手实践能力,培养其创新精神和团队协作精神。
二、教学内容本课程的教学内容主要包括C语言的基本语法、数据类型、运算符、控制结构等基础知识,以及图形绘制的基本原理和方法。
具体安排如下:1.第一章:C语言概述,使学生了解C语言的基本概念,掌握C语言的编译环境和基本语法。
2.第二章:数据类型和运算符,让学生掌握C语言的基本数据类型和运算符,为后续编程打下基础。
3.第三章:控制结构,引导学生掌握C语言的条件语句和循环语句,提高程序的控制能力。
4.第四章:函数,使学生了解函数的概念和作用,掌握函数的定义和调用方法。
5.第五章:图形绘制原理,讲解图形绘制的基本原理,引导学生掌握图形绘制的方法。
6.第六章:实践项目,让学生运用所学知识独立完成简单的图形绘制程序。
三、教学方法本课程采用讲授法、案例分析法和实验法相结合的教学方法,具体安排如下:1.讲授法:用于讲解C语言的基本语法、数据类型、运算符、控制结构等理论知识。
2.案例分析法:通过分析典型的图形绘制案例,使学生了解图形绘制的基本原理和方法。
3.实验法:让学生动手实践,独立完成图形绘制程序,提高其编程能力。
四、教学资源本课程的教学资源包括教材、参考书、多媒体资料和实验设备等,具体安排如下:1.教材:《C语言程序设计》2.参考书:《C语言 Primer》3.多媒体资料:课件、教学视频等4.实验设备:计算机、网络设备等五、教学评估本课程的评估方式包括平时表现、作业、考试等,具体安排如下:1.平时表现:通过课堂参与、提问、讨论等方式评估学生的学习态度和理解能力,占总评的30%。
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语言基本语法,介绍画图程序基本概念;第二课时:学习图形绘制函数,进行简单的图形绘制练习;第三课时:分析教材中的画图程序实例,讲解编程技巧;第四课时:综合运用所学知识,设计并实现组合图形;第五课时:创新设计,展示与分享学生的画图作品;第六课时:程序调试与优化,提高画图程序的运行效果。
C#——简单绘图程序《C#程序设计》课程设计题⽬:简单绘图程序学号:姓名:指导⽼师:⽬录1 前⾔ (1)2 课题介绍 (1)2.1功能要求 (1)2.2主要任务 (1)2.3运⾏环境 (1)2.4开发语⾔ (1)3 概要设计与详细设计 (1)3.1系统流程图 (2)3.2详细设计 (2)4 关键代码与特⾊功能的实现 (4)4.1关键代码 (4)4.2特⾊功能的实现 (6)5 课程设计总结 (13)参考⽂献 (13)1 前⾔编写⼀个程序来实现简单绘图。
通过单击不同的按钮在画布上绘制不同的图形(包括圆柱、矩形、扇形、圆形、三⾓形、多边形和曲线)以及对画布上已有的图形进⾏清除,可以进⾏已定图形的旋转,并且可以编辑图形线条的颜⾊。
2 课题介绍2.1功能要求(1)⽤C#语⾔实现程序设计;(2)利⽤结构体进⾏相关信息处理;(3)画出系统的流程图;(4)界⾯友好(良好的⼈机互交),程序要有注释。
2.2主要任务(1)声明⼀个Graphics类的实例,构造⼀⽀画笔和⼀个矩形区域结构;(2)通过程序语句,给定各个图形,使得单击相应按钮,图形显⽰在画布上;(3)设计程序使得已显⽰在画布上的图形得以清除或旋转,并可以设置图形线条的颜⾊;(4)画出所有模块的流程图;(5)编写代码;(6)程序分析与调试。
2.3运⾏环境(1)WINDOWS2000/XP系统(2)Visual Studio 2005开发环境2.4开发语⾔C#语⾔3 概要设计与详细设计3.1系统流程图系统的主要功能包括在画布上绘制曲线、扇形、圆形、圆柱、矩形、三⾓形和多边形,并对已绘制的图形进⾏清除,同时能够将已定图形旋转,也可以编辑图形线条的颜⾊。
系统的流程及框架如图3.1所⽰:图3.1系统流程图3.2详细设计声明Graphics类的实例g:Graphics g;构造⼀个矩形区域结构:Rectangle rect = new Rectangle(250, 60, 120, 60);(1)绘制给定圆柱的详细设计画圆柱上⽅的椭圆:g.DrawEllipse(new Pen(ForeColor, 2), 60, 10, 90, 50);画圆柱下⽅的椭圆:g.DrawEllipse(new Pen(ForeColor, 2), 60, 80, 90, 50);画两个椭圆之间的连线:g.DrawLine(new Pen(ForeColor, 2), 60, 35, 60, 105);g.DrawLine(new Pen(ForeColor, 2), 150, 35, 150, 105); (2)绘制给定矩形的详细设计改变矩形区域rect位置:rect.Y = 40;绘制矩形:g.DrawRectangle(new Pen(ForeColor, 2), rect);(3)绘制给定扇形的详细设计改变矩形区域rect位置:rect.Y = 160;绘制扇形(逆时针):g.DrawRectangle(new Pen(ForeColor, 2), rect,-45,-135); (4)绘制给定多边形的详细设计声明数组:Point[] pts = { new Point(540, 100), new Point(640, 135), new Point(680, 70), new Point(570, 130) };绘制多边形:g.DrawPolygon(new Pen(ForeColor, 2), pts);(5)绘制给定曲线的详细设计声明数组:Point[] pts = { new Point(400, 145), new Point(440, 195), new Point(480,85), new Point(390, 185) };绘制曲线:g.DrawPolygon(new Pen(ForeColor, 2), pts);(6)绘制给定圆形的详细设计绘制圆形:g.DrawEllipse(new Pen(ForeColor, 2), 105, 200, 50, 50); (7)绘制给定三⾓形的详细设计声明数组:Point[] pts = { new Point(500, 150), new Point(640, 200),new Point(480,210)};绘制三⾓形:g.DrawPolygon(new Pen(ForeColor, 2), pts);(8)清除画布的详细设计重画窗体:this.Refresh();(9)旋转画布的详细设计画布旋转:g.RotateTransform(15);(10)编辑颜⾊的详细设计ColorDialog colorDg = new ColorDialog();if(colorDg.ShowDialog() == DialogResult.OK)ForeColor = colorDg.Color ;4 关键代码与特⾊功能的实现4.1关键代码在程序的开头声明Graphics类的实例g,构造⼀个矩形区域结构,以便绘制各个给定图形。
C课设简单画图程序公司内部编号:(GOOD-TMMT-MMUT-UUPTY-UUYY-DTTI-简单画图程序1.基本功能描述本次课程设计的任务是利用计算机和VC开发环境编写一个简单画图程序,该程序的设计指标(即主要功能)有:①用鼠标拖动绘制圆、椭圆、矩形,线等基本图形;②能控制画笔的线宽和颜色;③能对图形进行颜色填充;④在鼠标移动的过程中能实时显示当前绘制的图形。
除了以上几点功能,我有另外添加了工具栏、铅笔、橡皮等功能来使程序更方便地让用户使用,简化了人机交互的过程。
2.设计思路首先是界面的问题,既然课设的题目是简单画图,那在建立工程的时候就要选择文档结构而不是以前做的基于对话框。
可选择单文档结构或多文档结构,但想到画图界面一般只有一个,从简洁的角度考虑,选择单文档结构。
而且用户界面在设计的时候要尽可能简单美观,一目了然,对相应功能有图标提示,使用户方便使用。
然后便是画图功能的具体实现。
分析课设要求,可以发现功能一要求的的椭圆、矩形、直线可以分别通过Ellipse();、Rectangle();、MoveTo();、LineTo();这四个函数来实现。
功能二控制画笔线宽和颜色可以给二者分别关联参数,通过改变线宽参数值来控制线宽,通过调用通用对话框改变颜色参数值来控制颜色。
功能三对图形进行颜色填充虽以前未接触过,但查阅资料后发现可以调用ExtFloodFill();并合理设定参数值来实现。
功能四的实时显示功能可以通过调用MouseMove();函数来实现。
这些功能需要建立菜单资源来表示各个功能选项,并建立相应的消息响应函数来进行实现。
另外,画图程序主要是通过鼠标来进行操作,所以要对鼠标消息的响应及处理函数多下功夫来思考和编写。
至于额外添加的功能,工具栏通过添加工具栏资源和关联相应菜单中画图功能ID实现;铅笔、橡皮的功能则是利用MouseMove();函数,在其中做了一些改动来实现。
2.1.程序流程图:图1 程序流程图3.软件设计3.1.设计步骤1)打开VS2010,选择新建项目,选中MFC应用程序,标题为CWN_Graphic;2)选择单文档结构,其他为默认值,点击完成。
简单画图程序 课程设计一、课程目标知识目标:1. 学生能够理解简单画图程序的基本概念和原理,掌握画图程序的基本操作。
2. 学生能够描述并运用画图程序中的绘图工具和功能,如线条、图形、颜色填充等。
3. 学生能够掌握画图程序中的图层概念,并运用图层进行作品的创作。
技能目标:1. 学生能够运用画图程序独立创作简单的图形作品,展示自己的创意和想象力。
2. 学生能够熟练使用画图程序的绘图工具,进行基本的绘图操作和编辑功能。
3. 学生能够通过画图程序的实践操作,培养观察力、空间思维能力和动手能力。
情感态度价值观目标:1. 学生对画图程序产生兴趣,积极参与课程学习,主动探索和创作。
2. 学生在创作过程中,培养自信心和耐心,学会坚持和克服困难。
3. 学生能够与他人分享自己的作品,学会欣赏和尊重他人的创作,培养团队合作意识和审美观念。
课程性质:本课程为信息技术课程,结合画图程序的实用性和趣味性,旨在培养学生的计算机操作能力和创造力。
学生特点:学生处于小学高年级阶段,对计算机操作有一定的基础,好奇心强,喜欢动手实践。
教学要求:课程设计要注重理论与实践相结合,以学生为主体,教师引导和辅导,鼓励学生主动探索和创作,培养其信息技术素养和创新能力。
通过具体的学习成果评估,确保课程目标的达成。
二、教学内容1. 画图程序基础知识:- 介绍画图程序的概念和作用。
- 学习画图程序的操作界面和工具栏。
2. 绘图工具的使用:- 线条工具:学习如何绘制直线、曲线等。
- 形状工具:掌握绘制矩形、圆形、三角形等基本图形的方法。
- 颜色填充工具:学习如何为图形填充颜色。
3. 图层管理:- 了解图层概念,学习图层的添加、删除和调整顺序。
- 掌握图层透明度和锁定功能的使用。
4. 作品创作:- 创作简单的图形作品,如卡通人物、风景等。
- 结合所学工具和功能,进行创意作品的绘制。
5. 教学大纲安排:- 第一课时:画图程序基础知识,认识操作界面和工具栏。
简单图形设计C语言课程设计一、课程目标知识目标:1. 学生能够理解C语言中基本图形绘制的基础知识,掌握利用C语言进行简单图形设计的方法。
2. 学生能够掌握C语言中的二维数组,并能运用数组进行图形的存储与显示。
3. 学生能够运用循环和条件语句进行图形的边界控制,实现不同尺寸和样式的图形设计。
技能目标:4. 学生能够编写简单的C程序,实现至少三种基本图形(如矩形、三角形、圆形)的绘制。
5. 学生能够通过上机实践,学会调试和修改程序中出现的错误,提高问题解决能力。
6. 学生能够通过小组合作,交流想法,共同完成一个创意图形设计的项目。
情感态度价值观目标:7. 学生能够通过图形设计的学习,培养对计算机编程的兴趣,增强学习信息技术的积极性。
8. 学生在小组合作中,学会相互尊重、倾听他人意见,培养团队协作能力和沟通技巧。
9. 学生能够在创作图形的过程中,发挥个人创意,体会编程与艺术结合的美,提升审美观察能力。
课程性质分析:本课程属于信息技术学科,针对学生的年级特点,课程内容设计注重实践操作和创意发挥,旨在提高学生的编程兴趣和实际应用能力。
学生特点分析:考虑到学生年级和认知水平,课程设计以直观的图形设计入手,逐步引导学生掌握C语言编程的基本方法,鼓励学生在实践中学习和探索。
教学要求分析:教学中需注重理论与实践相结合,强调学生动手实践,通过具体的学习成果,评估学生对知识技能的掌握程度,以及情感态度价值观的培养效果。
二、教学内容1. C语言基础知识回顾:变量、数据类型、运算符、输入输出函数。
2. 控制结构:顺序结构、分支结构(if语句)、循环结构(for循环、while循环)。
3. 二维数组:定义、初始化、访问二维数组元素,数组的应用场景。
4. 图形设计原理:直线、矩形、三角形、圆形的绘制方法,坐标系的应用。
5. 图形绘制函数:使用C语言标准库函数(如graphics.h中的函数)进行图形绘制。
6. 项目实践:小组合作设计一个创意图形,要求包含至少三种基本图形,并具有实际意义。
目录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基本功能描述简单画图程序实现了常见图形的绘制、图形属性的设置和图形数据的暂存等功能。
简单画图程序1.基本功能描述本次课程设计的任务是利用计算机和VC开发环境编写一个简单画图程序,该程序的设计指标(即主要功能)有:①用鼠标拖动绘制圆、椭圆、矩形,线等基本图形;②能控制画笔的线宽和颜色;③能对图形进行颜色填充;④在鼠标移动的过程中能实时显示当前绘制的图形。
除了以上几点功能,我有另外添加了工具栏、铅笔、橡皮等功能来使程序更方便地让用户使用,简化了人机交互的过程。
2.设计思路首先是界面的问题,既然课设的题目是简单画图,那在建立工程的时候就要选择文档结构而不是以前做的基于对话框。
可选择单文档结构或多文档结构,但想到画图界面一般只有一个,从简洁的角度考虑,选择单文档结构。
而且用户界面在设计的时候要尽可能简单美观,一目了然,对相应功能有图标提示,使用户方便使用。
然后便是画图功能的具体实现。
分析课设要求,可以发现功能一要求的的椭圆、矩形、直线可以分别通过Ellipse();、Rectangle();、MoveTo();、LineTo();这四个函数来实现。
功能二控制画笔线宽和颜色可以给二者分别关联参数,通过改变线宽参数值来控制线宽,通过调用通用对话框改变颜色参数值来控制颜色。
功能三对图形进行颜色填充虽以前未接触过,但查阅资料后发现可以调用ExtFloodFill();并合理设定参数值来实现。
功能四的实时显示功能可以通过调用MouseMove();函数来实现。
这些功能需要建立菜单资源来表示各个功能选项,并建立相应的消息响应函数来进行实现。
另外,画图程序主要是通过鼠标来进行操作,所以要对鼠标消息的响应及处理函数多下功夫来思考和编写。
至于额外添加的功能,工具栏通过添加工具栏资源和关联相应菜单中画图功能ID实现;铅笔、橡皮的功能则是利用MouseMove();函数,在其中做了一些改动来实现。
2.1.程序流程图:开始3.软件设计3.1.设计步骤1)打开VS2010,选择新建项目,选中MFC应用程序,标题为CWN_Graphic;2)选择单文档结构,其他为默认值,点击完成。
3.2 .界面设计3.2.1.添加菜单1)选择资源视图,鼠标右键,添加,资源;2)在资源视图中打开添加的菜单资源,将各个功能的名称添加进去并合理安排,并设置好相应的ID,如图2:图2 编辑菜单及相应ID3.2.2 .添加工具栏1)在资源视图下右键选择添加资源,ToolBar;2)打开新建的工具栏,在上面添加各个小按钮,按钮图像自行画出;3)将每个按钮的ID与菜单项一一对应起来,如图3:图3 工具栏样式及ID3.3.关键功能实现1)打开类向导;2)为各个菜单项添加消息函数,如图4:图4 添加消息函数相关ID、关联变量及响应函数如表1:表1 相关功能ID 及所关联变量3)按照所需在CWN_GraphicView.h中添加变量并在CWN_GraphicView.cpp中对变量初始化:UINT m_nDrawType = 0;//绘画类型初始为0CPoint m_ptOldOrigin = 0;//坐标点初始为(0,0)CPoint m_ptNewOrigin = 0;UINT m_nLineWidth = 0;//线宽初始为0UINT m_EraserWidth = 1;//橡皮初始大小为1INT m_nLineStyle = 0;//线宽初始为0BOOL m_Pen = FALSE;//画笔功能未被选中BOOL m_Eraser = FALSE;//橡皮功能未被选中BOOL m_LButtonDown = FALSE;//鼠标左键未按下BOOL m_Fill = FALSE;//填充功能未被选中COLORREF m_clr = RGB(0,0,0);//颜色初始值为黑色4)在各响应函数中添加相应代码,例如:/**********左键按下************//*该函数实现了再鼠标左键按下时确定按下点的坐标、将左键被按下置为1和判断是否填充选项被选中,若选中则进行填充,未选中则无操作*/void CCWN_GraphicView::OnLButtonDown(UINT nFlags , CPoint point){m_ptNewOrigin=point; //将当前点坐标传给变量m_ptOldOrigin=point;m_LButtonDown=TRUE; //左键按下赋值1if(m_Fill==TRUE) //填充功能{CClientDC dc(this);HBRUSH hBrush=CreateSolidBrush(m_clr); //选择画刷dc.SelectObject(hBrush);dc.ExtFloodFill (m_ptNewOrigin.x,m_ptNewOrigin.y,RGB(0,0,0),0);//该函数将使用当前刷子填充显示表面区域}CView::OnLButtonDown(nFlags,point);}/***********左键松开************//*该函数通过在鼠标左键松开时,将松开点坐标传给PC,并由之前选择的绘画类型来判断要进行的绘画操作*/void CCWN_GraphicView::OnLButtonUp(UINT nFlags , CPoint point){m_LButtonDown=FALSE; //左键松开赋值0CClientDC dc(this);CPen pen(m_nLineStyle,m_nLineWidth,m_clr); //创建画笔画刷dc.SelectObject (&pen); //选择画笔CBrush*pBrush=CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));dc.SelectObject (pBrush); //选择画刷m_ptNewOrigin=point; //左键松开的坐标点送给m_ptNewOriginswitch(m_nDrawType){case 1:/*******画点*******/dc.SetPixel(point,m_clr);break;case 2:/*******画线*********/dc.MoveTo (m_ptOldOrigin);dc.LineTo (m_ptNewOrigin);break;case 3:/**********画矩形**********/dc.Rectangle (CRect(m_ptOldOrigin,m_ptNewOrigin));break;case 4:/*********画椭圆**********/dc.Ellipse (CRect(m_ptOldOrigin,m_ptNewOrigin));break;}CView::OnLButtonUp (nFlags,point);}/*************线型+线宽设置*********//*该函数在线型线宽功能被选择时,会生成一个线型线宽设置对话框(之前在资源中添加和编辑的对话框资源),并将用户操作后的线型线宽值传给PC*/void CCWN_GraphicView::OnLineWidth(){// TODO: 在此添加命令处理程序代码CSettingDlg line_dlg;line_dlg.m_nLineWidth = m_nLineWidth ; //将先前设置的线宽回传给对话框line_dlg.m_nLineStyle = m_nLineStyle; //将先前设置的线型回传给对话框if(IDOK==line_dlg.DoModal ()){m_nLineWidth=line_dlg.m_nLineWidth ;m_nLineStyle = line_dlg.m_nLineStyle ;}}/*************动态显示函数******************//*该函数单独写出,配合OnMouseMove();函数可实现动态显示的功能*/void CCWN_GraphicView::Draw(){CClientDC dc(this);CPen pen(m_nLineStyle,m_nLineWidth,m_clr);CPen *oldPen=dc.SelectObject(&pen);dc.SelectStockObject(NULL_BRUSH);int drawmode=dc.SetROP2(R2_NOTXORPEN);/*R2_NOTXORPEN模式的作用是:先把画笔的颜色取反,再与屏幕颜色进行“或”操作,从而得到像素最终显示的颜色。
*/switch(m_nDrawType){case 2:dc.MoveTo(m_ptOldOrigin);dc.LineTo(m_ptNewOrigin);break;case 3:dc.Rectangle(CRect(m_ptOldOrigin,m_ptNewOrigin));break;case 4:dc.Ellipse(CRect(m_ptOldOrigin,m_ptNewOrigin));break;}dc.SetROP2(drawmode);dc.SelectObject(oldPen);}/*************MOUSE MOVE***************//*此函数与前面的动态显示函数(Draw();)进行配合便可实现在鼠标移动时的实时显示功能,思路是在绘图时,先用屏幕背景色覆盖掉鼠标移动前的画面,然后用选定的画笔颜色重新绘制下一次鼠标移动的画面*/void CCWN_GraphicView::OnMouseMove(UINT nFlags, CPoint point){// TODO: 在此添加消息处理程序代码和/或调用默认值CClientDC dc(this);CPen pen(m_nLineStyle,m_nLineWidth,m_clr);CPen *oldPen=dc.SelectObject(&pen);if(m_LButtonDown!=FALSE){Draw();m_ptNewOrigin=point;Draw();if(m_Pen==TRUE) //铅笔功能{m_nDrawType=0; //画图类型改为初始值,以免多重画图dc.MoveTo (m_ptOldOrigin);dc.LineTo (m_ptNewOrigin);//修改线段起点m_ptOldOrigin=m_ptNewOrigin;m_ptNewOrigin=point;}if(m_Eraser==TRUE) //橡皮功能{m_nDrawType=0;CPen pen(m_nLineStyle,m_EraserWidth,RGB(255,255,255));dc.SelectObject(&pen);dc.MoveTo (m_ptOldOrigin);dc.LineTo (m_ptNewOrigin);//修改线段起点m_ptOldOrigin=m_ptNewOrigin;m_ptNewOrigin=point;}}dc.SelectObject(oldPen);CView::OnMouseMove(nFlags, point);}/************选择铅笔**************//*该函数在选择铅笔功能后,将铅笔功能置为真,其他有干扰的功能置为假*/void CCWN_GraphicView::OnPen(){// TODO: 在此添加命令处理程序代码m_Pen = TRUE; //画笔被选中m_Fill = FALSE; //取消填充功能m_Eraser = FALSE; //取消橡皮功能}4.结论与心得体会本次课程设计虽说是“简单”画图程序的设计,但真要是自己做起来,感觉一点也不简单。