简单的绘图程序实验报告
实验三 用excel软件绘图
实验三用Excel软件进行绘图一、实验目的使学生较熟练地掌握资料整理和统计图表的绘制方法。
要求会使用EXCEL绘制的图表、图形,以及公式的编辑和计算。
二、实验器具计算机三、实验要求每位同学一台计算机独立完成操作,并结合习题按照操作情况写出。
四、实验操作步骤(一)间断性变数资料的整理例:100个麦穗的每穗小穗数18 15 17 19 16 15 20 18 19 1717 18 17 16 18 20 19 17 16 1817 16 17 19 18 18 17 17 17 1818 15 16 18 18 18 17 20 19 1817 19 15 17 17 17 16 17 18 1817 19 19 17 19 17 18 16 18 1717 19 16 16 17 17 17 15 17 1618 19 18 18 19 19 20 17 16 1918 17 18 20 19 16 18 19 17 1615 16 18 17 18 17 17 16 19 17(1)数据输入打开计算机点击“开始” 选择“程序” 选择“Microsoft office” 选择“excel”,进入excel的界面;(2)分组:按观察值分组(3)统计次数,并整理成次数分布表(调用countif函数)在excel界面的工具栏中点击“插入” 选择“函数” 选择“统计” 选择“countif”点击“确定”。
在countif对话框中,分布选定range和criteria,然后点击“确定”(4)绘制分布图在excel界面的工具栏中点击“插入” 选择“图表” 选择一种图表类型选择“下一步”选定“数据区域”点击“完成”。
(二)连续性变数资料的整理例:140行水稻产量(单位:克)177 215 197 97 123 159 245 119 119 131 149 152 167 104 161 214 125 175 219 118 192 176 175 95 136 199 116 165 214 95 158 83 137 80 138 151 187 126 196 134 206 137 98 97 129 143 179 174 159 165 136 108 101 141 148 168 163 176 102 194 145 173 75 130 149 150 161 155 111 158131 189 91 142 140 154 152 163 123 205 149 155 131 209 183 97 119 181 149 187 131 215 111 186 118 150 155 197 116 254 239 160 172 179 151 198 124 179 135 184 168 169 173 181 188 211 197 175 122 151 171 166 175 143 190 213 192 231 163 159 158 159 177 147 194 227 141 169 124 159(1)求全距R(2)确定组数,分组(3)统计每组次数,并整理成次数分布表(调用frequency函数)在excel界面的工具栏中点击“插入” 选择“函数” 选择“统计” 选择“frequency”点击“确定”。
《软件开发工具》turtle图形绘制实验报告
《软件开发工具》turtle图形绘制实验报告2.编写思想:编写五角星图案,采用turtle类库来实现,核心是设置每条边的长度及其每次旋转的角度,由于边长和旋转角度每次一样,可通过for循环来实现多条相同边的运动,从而实现五角星的编写,其中fillcolor()函数设置填充颜色,begin_fill()函数表明开始填充,end_fill()函数表示结束填充。
源码:import turtle as tt.fillcolor("red")t.begin_fill()for i in range(5):t.fd(300)t.right(180-180/5)t.end_fill()t.done()运行截图:3.编写思想:源码:from turtle import *n=6tracer(False)colors=['purple','red','blue','pink','green','gold']shape('turtle')for i in range(200): pencolor(colors[i%n])fd(i*3/n+i)done()运行截图:四、实验总结:(实验中遇到的问题及解决方法,心得体会等)问题:1)对于用turtle绘图库中的一些函数用处及使用了解不清;2)在使用turtle中的旋转角度的函数时,常常出现旋转方向及旋转角度判断不清;4)编写的for循环中的语句时常出错,无法实现既定的行动轨迹要求;解决办法:1)向老师请教,对用turtle绘图库中的函数的参数多次使用,从而加深自己的理解;2)和同学讨论在编写时的问题,;心得体会:1)可以通过用turtle绘图库来绘制各种各样的图形;2)学习了turtle库语法元素,包括绘图坐标体系,画笔控制函数和形状绘制函数;3)turtle可以灵活的绘制各种图形,一定要熟练掌握并且可以熟练运用。
图像的绘制实验报告
图像的绘制实验报告1. 引言本实验旨在探索图像绘制的基本原理和方法,通过使用图像处理库和编程语言绘制简单的图像,加深对图像处理的理解和应用。
2. 实验器材和方法2.1 实验器材- 计算机- 编程语言:Python- 图像处理库:Pillow2.2 实验方法1. 安装Python和Pillow库2. 导入Pillow库3. 创建一个新的图像文件4. 绘制基本的几何图形3. 实验结果3.1 创建图像文件首先,我们使用Pillow库创建一个新的图像文件,并指定图像的尺寸和背景颜色:pythonfrom PIL import Image创建一个新的图像文件image = Image.new("RGB", (500, 500), "white")3.2 绘制基本的几何图形接下来,我们可以使用Pillow库提供的绘图函数,在图像文件上绘制几何图形。
例如,我们可以绘制一个红色的正方形:pythonfrom PIL import ImageDraw创建一个ImageDraw对象draw = ImageDraw.Draw(image)绘制一个红色的正方形draw.rectangle([(100, 100), (400, 400)], fill="red")除了正方形,我们还可以绘制其他几何图形,如圆形、椭圆、直线等。
3.3 保存图像文件最后,我们将绘制好的图像文件保存到本地:python保存图像文件image.save("result.png")4. 结论通过本次实验,我们学习了使用Pillow库进行图像处理的基本方法。
我们可以使用Pillow库创建一个新的图像文件,并在图像文件上绘制各种基本的几何图形。
这些方法和技巧对于图像处理和计算机视觉的研究和应用具有重要的意义和价值。
5. 参考文献[1] Pillow官方文档. Pillow Documentation. [Online] Available:[2] Python官方文档. PIL / Pillow ImageGui. [Online] Available:。
cad实验报告怎么写
cad实验报告怎么写cad实验报告怎么写(共4篇)篇一:CAD实验报告格式实验一 AutoCAD基本操作一、实验目的和要求1、熟悉CAD软件界面;2、掌握利用鼠标、键盘操作绘图界面;3、掌握图层设置;4、掌握命令输入的各种方法。
二、实验内容1、AutoCAD的启动;2、AutoCAD的界面组成;3、文件操作:命名、保存;3、AutoCAD命令输入方式;4、设置图层:中心线、粗实线、细实线、虚线;5、绘制直线。
三、主要仪器计算机、AutoCAD软件四、操作方法与结果1、启动AutoCAD;2、设置图层:中心线、粗实线、细实线、虚线;3、用line命令绘制正方形,边长为100mm;4、命名文件为“学号+姓名”,并保存。
一、实验目的和要求1、掌握二维绘图命令;2、掌握坐标输入方法;3、掌握偏移命令;4、掌握修剪命令。
二、实验内容1、用直线命令绘制多边形;2、用矩形命令绘制矩形;3、绘制图框;3、绘制标题栏;三、主要仪器计算机、AutoCAD软件四、操作方法与结果1、设置图层:中心线、粗实线、细实线、虚线;2、绘制A4图框;3、在A4图框中绘制标题栏;一、实验目的和要求1、掌握二维绘图命令;2、掌握移动命令;3、掌握旋转命令;4、掌握镜象命令。
二、实验内容1、完成A4图框绘制;2、绘制几何图。
三、主要仪器计算机、AutoCAD软件四、操作方法与结果1、设置图层:中心线、粗实线、细实线、虚线、作图线;2、绘制完成A4图框;3、综合运用作图命令,绘制几何图形。
实验四图案填充一、实验目的和要求1、掌握图案填充方法;2、掌握渐变色填充方法;3、掌握填充图案编辑方法。
二、实验内容1、在图形中填充图案;2、在图形中填充渐变色;3、编辑填充图案。
三、主要仪器计算机、AutoCAD软件四、操作方法与结果1、填充各类剖面图案;2、调整填充图案格式;3、完成图案和渐变色填充。
实验五文字书写一、实验目的和要求1、掌握文字样式设置;2、掌握单行和多行文字输入方法;3、掌握文字编辑方法;二、实验内容1、设置文字样式;2、创建单行文字;3、创建多行文字;4、编辑文字。
CADCAM实验报告
实验一图形变换一、目的与任务目的:通过学生上机,了解计算机绘图的相关基础知识和方法。
任务:熟悉二维、三维图形的几何变换。
二、内容、要求与安排方式1、实验内容与要求:编写简单的二维、三维图形几何变换的程序。
要求用熟悉的编程语言编制调试和运行程序,并打印程序清单和输出结果。
2、实验安排方式:课外编写好程序清单,按自然班统一安排上机。
三、实验步骤1、课外时间编制好程序框图。
2、课外时间编写好源程序清单。
3、上机调试和运行程序。
4、打印程序清单和运行结果(包含变换前后的位置)。
四、流程图五、程序清单Private Sub Form_Load()Text1.Text = InputBox("输入A点X坐标")Text2.Text = InputBox("输入A点Y坐标")Text4.Text = InputBox("输入B点X坐标")Text5.Text = InputBox("输入B点Y坐标")Text7.Text = InputBox("输入C点X坐标")Text8.Text = InputBox("输入C点Y坐标")End SubPrivate Sub Command1_Click()Text19.Text = 1Text20.Text = 0Text21.Text = 0Text22.Text = 0Text23.Text = 1Text24.Text = 0Text25.Text = -Val(Text47.Text)Text26.Text = -Val(Text48.Text)Text27.Text = 1End SubPrivate Sub Command2_Click()Text28.Text = Format(Cos(Val(Text46.Text) * 3.1415926 / 180), "0.000") Text29.Text = Format(Sin(Val(Text46.Text) * 3.1415926 / 180), "0.000") Text30.Text = 0Text31.Text = Format(-Sin(Val(Text46.Text) * 3.1415926 / 180), "0.000") Text32.Text = Format(Cos(Val(Text46.Text) * 3.1415926 / 180), "0.000") Text33.Text = 0: Text34.Text = 0: Text35.Text = 0: Text36.Text = 1End SubPrivate Sub Command3_Click()Text37.Text = 1Text38.Text = 0Text39.Text = 0Text40.Text = Val(Text58.Text)Text41.Text = 1Text42.Text = 0Text43.Text = 0Text44.Text = 0Text45.Text = 1End SubPrivate Sub Command6_Click()Text49.Text = 1Text50.Text = 0Text51.Text = 0Text52.Text = 0Text53.Text = 1Text54.Text = 0Text55.Text = Val(Text47.Text)Text56.Text = Val(Text48.Text)Text57.Text = 1End SubPrivate Sub Command4_Click()a = Val(Text1.Text) * Val(Text19.Text) + Val(Text2.Text) * Val(Text22.Text) + Val(Text3.Text) * Val(Text25.Text)b = Val(Text1.Text) * Val(Text20.Text) + Val(Text2.Text) * Val(Text23.Text) + Val(Text3.Text) * Val(Text26.Text)c = Val(Text1.Text) * Val(Text21.Text) + Val(Text2.Text) * Val(Text24.Text) + Val(Text3.Text) * Val(Text27.Text)d = Val(Text4.Text) * Val(Text19.Text) + Val(Text5.Text) * Val(Text22.Text) + Val(Text6.Text) * Val(Text25.Text)e = Val(Text4.Text) * Val(Text20.Text) + Val(Text5.Text) * Val(Text23.Text) + Val(Text6.Text) * Val(Text26.Text)f = Val(Text4.Text) * Val(Text21.Text) + Val(Text5.Text) * Val(Text24.Text) + Val(Text6.Text) * Val(Text27.Text)g = Val(Text7.Text) * Val(Text19.Text) + Val(Text8.Text) * Val(Text22.Text) + Val(Text9.Text) * Val(Text25.Text)h = Val(Text7.Text) * Val(Text20.Text) + Val(Text8.Text) * Val(Text23.Text) + Val(Text9.Text) * Val(Text26.Text)i = Val(Text7.Text) * Val(Text21.Text) + Val(Text8.Text) * Val(Text24.Text) + Val(Text9.Text) * Val(Text27.Text) j = a * Val(Text28.Text) + b * Val(Text31.Text) + c * Val(Text34.Text)k = a * Val(Text29.Text) + b * Val(Text32.Text) + c * Val(Text35.Text)l = a * Val(Text30.Text) + b * Val(Text33.Text) + c * Val(Text36.Text)m = d * Val(Text28.Text) + e * Val(Text31.Text) + f * Val(Text34.Text)n = d * Val(Text29.Text) + e * Val(Text32.Text) + f * Val(Text35.Text)o = d * Val(Text30.Text) + e * Val(Text33.Text) + f * Val(Text36.Text)p = g * Val(Text28.Text) + h * Val(Text31.Text) + i * Val(Text34.Text)q = g * Val(Text29.Text) + h * Val(Text32.Text) + i * Val(Text35.Text)r = g * Val(Text30.Text) + h * Val(Text33.Text) + i * Val(Text36.Text)a1 = j * Val(Text37.Text) + k * Val(Text40.Text) + l * Val(Text43.Text)b1 = j * Val(Text38.Text) + k * Val(Text41.Text) + l * Val(Text44.Text)c1 = j * Val(Text39.Text) + k * Val(Text42.Text) + l * Val(Text45.Text)d1 = m * Val(Text37.Text) + n * Val(Text40.Text) + o * Val(Text43.Text)e1 = m * Val(Text38.Text) + n * Val(Text41.Text) + o * Val(Text44.Text)f1 = m * Val(Text39.Text) + n * Val(Text42.Text) + o * Val(Text45.Text)g1 = p * Val(Text37.Text) + q * Val(Text40.Text) + r * Val(Text43.Text)h1 = p * Val(Text38.Text) + q * Val(Text41.Text) + r * Val(Text44.Text)i1 = p * Val(Text39.Text) + q * Val(Text42.Text) + r * Val(Text45.Text)Text10.Text = a1 * Val(Text49.Text) + b1 * Val(Text52.Text) + c1 * Val(Text55.Text)Text11.Text = a1 * Val(Text50.Text) + b1 * Val(Text53.Text) + c1 * Val(Text56.Text)Text12.Text = a1 * Val(Text51.Text) + b1 * Val(Text54.Text) + c1 * Val(Text57.Text)Text13.Text = d1 * Val(Text49.Text) + e1 * Val(Text52.Text) + f1 * Val(Text55.Text)Text14.Text = d1 * Val(Text50.Text) + e1 * Val(Text53.Text) + f1 * Val(Text56.Text)Text15.Text = d1 * Val(Text51.Text) + e1 * Val(Text54.Text) + f1 * Val(Text57.Text)Text16.Text = g1 * Val(Text49.Text) + h1 * Val(Text52.Text) + i1 * Val(Text55.Text)Text17.Text = g1 * Val(Text50.Text) + h1 * Val(Text53.Text) + i1 * Val(Text56.Text)Text18.Text = g1 * Val(Text51.Text) + h1 * Val(Text54.Text) + i1 * Val(Text57.Text)End SubPrivate Sub Command5_Click()EndEnd Sub六、运行结果。
计算机图形学实验报告_2
计算机图形学实验报告学号:********姓名:班级:计算机 2班指导老师:***2010.6.19实验一、Windows 图形程序设计基础1、实验目的1)学习理解Win32 应用程序设计的基本知识(SDK 编程);2)掌握Win32 应用程序的基本结构(消息循环与消息处理等); 3)学习使用VC++编写Win32 Application 的方法。
4)学习MFC 类库的概念与结构;5)学习使用VC++编写Win32 应用的方法(单文档、多文档、对话框);6)学习使用MFC 的图形编程。
2、实验内容1)使用WindowsAPI 编写一个简单的Win32 程序,调用绘图API 函数绘制若干图形。
(可选任务)2 )使用MFC AppWizard 建立一个SDI 程序,窗口内显示"Hello,Thisis my first SDI Application"。
(必选任务)3)利用MFC AppWizard(exe)建立一个SDI 程序,在文档视口内绘制基本图形(直线、圆、椭圆、矩形、多边形、曲线、圆弧、椭圆弧、填充、文字等),练习图形属性的编程(修改线型、线宽、颜色、填充样式、文字样式等)。
定义图形数据结构Point\Line\Circle 等保存一些简单图形数据(在文档类中),并在视图类OnDraw 中绘制。
3、实验过程1)使用MFC AppWizard(exe)建立一个SDI 程序,选择单文档;2)在View类的OnDraw()函数中添加图形绘制代码,说出字符串“Hello,Thisis my first SDI Application”,另外实现各种颜色、各种边框的线、圆、方形、多边形以及圆弧的绘制;3)在类视图中添加图形数据point_pp,pp_circle的类,保存简单图形数据,通过在OnDraw()函数中调用,实现线、圆的绘制。
4、实验结果正确地在指定位置显示了"Hello,This is my first SDI Application"字符串,成功绘制了圆,椭圆,方形,多边形以及曲线圆弧、椭圆弧,同时按指定属性改绘了圆、方形和直线。
cad上机实验报告
cad上机实验报告基于CAD的计算机辅助设计技术在现代工业中扮演着重要的角色。
通过使用CAD软件,工程师和设计师可以更加高效和准确地进行产品设计和制造。
本实验旨在通过使用CAD软件进行一些实际操作,加深我们对CAD技术的理解和掌握程度。
1. 实验引言计算机辅助设计(CAD)是一种利用计算机技术进行产品设计和制造的方法。
它已成为现代工业领域不可或缺的工具,帮助工程师和设计师在设计和制造过程中提高效率和准确性。
2. CAD软件介绍CAD软件是计算机辅助设计的核心工具。
市场上有许多种不同的CAD软件,例如AutoCAD、SolidWorks和CATIA等。
本次实验我们将使用AutoCAD软件进行操作。
3. CAD软件的基本操作在开始具体的设计前,我们首先需要了解CAD软件的基本操作。
这包括了软件的界面介绍、常用的绘图命令和修改命令等。
熟练掌握这些基本操作是进行CAD设计的前提。
4. 绘制简单的图形使用CAD软件进行设计的第一步是绘制简单的图形。
在实验中,我们可以练习绘制一些基本的几何形状,如直线、矩形和圆等。
通过这些练习,我们可以掌握CAD软件的绘图命令,并熟悉其操作流程。
5. 三维模型设计CAD软件不仅可以进行二维图形设计,还能进行三维模型设计。
三维模型设计是现代工业中非常重要的一环,它可以帮助工程师和设计师更好地理解产品的结构和功能。
通过CAD软件,我们可以绘制出真实比例的三维模型,并进行模型的组装和分解。
6. CAD软件与其他软件的集成CAD软件与其他软件的集成可以进一步提高设计和制造的效率。
例如,将CAD软件与CAM(计算机辅助制造)软件进行集成,可以实现直接从CAD模型生成工艺路线和加工代码,从而加快产品的制造过程。
此外,还可以将CAD模型与有限元分析软件进行集成,进行产品的强度和刚度分析。
7. CAD软件在实际工程中的应用CAD软件在实际工程中有着广泛的应用。
它可以用于汽车工业、航空航天工业、建筑工程、电子工程等各个领域。
cad实验报告
cad实验报告CAD实验报告一、实验目的本次实验的目的是学习CAD(计算机辅助设计)软件的基本操作,包括创建、修改和查看CAD图纸,并通过实际绘制一个简单的机械零件来巩固所学知识。
二、实验内容1. 学习CAD软件的基本操作,包括打开、关闭、保存、新建和另存为等操作。
2. 学习CAD软件的绘图工具和命令,包括绘制线段、多边形、圆弧和椭圆等。
3. 学习CAD软件的编辑工具和命令,包括移动、复制、旋转和缩放等。
4. 绘制一个简单的机械零件,包括绘制基本形状和添加尺寸。
三、实验步骤1. 打开CAD软件,选择新建一个机械图纸。
2. 使用CAD的绘图工具,绘制一个矩形作为零件的基础形状。
3. 使用CAD的编辑工具,移动和复制矩形,创建零件的其他形状。
4. 使用CAD的命令,添加零件的尺寸和注释。
5. 检查零件的尺寸和几何关系是否正确。
6. 保存CAD图纸,关闭CAD软件。
四、实验结果经过上述步骤,我成功地绘制出了一个简单的机械零件。
该零件包括一个矩形和两个圆弧,具有正确的尺寸和注释。
通过使用CAD软件,我可以轻松地绘制和修改机械图纸,并且可以根据需要进行尺寸和注释的添加。
五、实验心得通过本次实验,我学会了CAD软件的基本操作,包括创建、修改和查看CAD图纸。
我熟悉了CAD软件的绘图工具和命令,能够使用这些工具和命令进行绘图和编辑操作。
通过实际绘制一个机械零件,我加深了对CAD软件的理解,并掌握了如何添加尺寸和注释。
在以后的学习和工作中,我将继续运用CAD软件进行设计和绘图,以提高工作效率和质量。
总之,本次实验对我来说是一次很有收获的实践活动。
计算机辅助设计CAD-实验报告
实验报告课程名称:《计算机辅助设计》实验名称:《计算机辅助设计》课程实验院(系):管理学院专业班级:姓名:学号:指导教师:2014 年06 月02日实验项目一课程名称:《计算机辅助设计》实验类别:本科基础实验实验项目名称:AutoCAD综合绘图实验实验学时:10实验类型:操作、综合应用性实验开出要求:必做实验地点:西楼二楼微机实验室每组人数:1实验日期:2014年05月09、16、23日一、实验目的和要求目的:1.进行AutoCAD基础绘图命令使用练习,掌握AutoCAD基础绘图命令的使用方法。
2.进行AutoCAD图形绘制、编辑和处理练习,掌握AutoCAD图形绘制、编辑方法。
3.进行AutoCAD图形中文字标识、尺寸标注方法练习,掌握AutoCAD图形文字标识和尺寸标注方法,能够对AutoCAD图形输出进行设置。
4.应用所学图形绘制、编辑处理技术,设计并完成一幅综合图形的绘制。
要求:1、利用AutoCAD基本图元进行简单二维图形的绘图练习,完成一幅简单二维图形的绘制。
2.掌握AutoCAD的基本操作及常用命令并熟悉图形绘制、编辑;3.掌握AutoCAD图块的使用、图案填充操作;4.完成一幅基本二维工程图形的绘制、编辑和处理。
5.掌握AutoCAD图形中文字标识方法;6.掌握AutoCAD图形尺寸标注方法;7.掌握AutoCAD模型创建;8.掌握AutoCAD图形输出设置方法及步骤;9.完成一幅建筑或机械图形的文字标识和尺寸标注。
10.掌握AutoCAD图层管理器的使用;11.掌握AutoCAD线型管理器的使用;12.掌握AutoCAD颜色管理器的使用;13.掌握AutoCAD图形的绘图布局和打印输出控制;14.完成一幅综合图形的绘制、布局、出图设置等。
二、实验内容1.AutoCAD的安装,启动和退出,环境设置、熟悉工作界面。
2.熟悉基础绘图的命令(点、线、编辑);3.完成一幅简单二维图形的绘制。
实验报告简单绘图程序
实验三绘制图形一、实验目的学会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();}}三、实验结果。
cad画图实验报告
cad画图实验报告
《CAD画图实验报告》
实验目的:通过CAD软件进行画图实验,掌握CAD软件的基本操作和绘图技巧,提高绘图能力和效率。
实验内容:本次实验采用CAD软件进行绘图实验,包括绘制简单的几何图形、建筑平面图、机械零件图等。
实验步骤:
1. 熟悉CAD软件界面和工具栏,了解各种绘图命令的功能和使用方法。
2. 绘制简单的几何图形,如直线、圆、矩形等,熟练掌握CAD的基本绘图命令。
3. 绘制建筑平面图,包括房间布局、墙体、门窗等,学习CAD的图层管理和尺寸标注。
4. 绘制机械零件图,包括零件的轮廓、尺寸标注、断面等,掌握CAD的编辑和修图命令。
实验结果:通过实验,掌握了CAD软件的基本操作和绘图技巧,绘制了符合要求的几何图形、建筑平面图和机械零件图,提高了绘图能力和效率。
实验总结:CAD软件是一款强大的绘图工具,能够快速、准确地绘制各种图形
和图纸,提高了绘图效率和质量。
通过本次实验,我对CAD软件有了更深入的了解,掌握了基本操作和绘图技巧,对今后的工程设计和制图工作有了更好的
准备。
结语:CAD画图实验为我提供了一个很好的学习机会,让我更加熟练地掌握了CAD软件的使用技巧,提高了我的绘图能力和效率,为未来的工程设计和制图
工作打下了坚实的基础。
JAVA简单画板程序设计实验报告
J A V A简单画板程序设计实验报告As a person, we must have independent thoughts and personality.JAVA期末画板实验报告课程题目:运用JAVA语言编写一个画板程序,这个画板要有画图,特殊图形绘制,颜色改变,画笔大小改变等功能。
设计思想:1.进行界面设计2.进行算法实现3.运行调试4.总结问题设计过程:A.界面设计B.新建一个Jframe容器,然后定义一个panel( Panel convas2),convas2是工具栏。
用borderlayout布置容器的边框布局,将工具栏放在NORTH部分。
完成界面设计。
add(canvas2,;Panel canvas2 = new Panel();添加工具按键Panel canvas2 = new Panel();Button btn1 = new Button("直线");Button btn2 = new Button("椭圆");Button btn3 = new Button("矩形");Button btn4 = new Button("清除");Button btn5 = new Button("画笔");Button btn6 = new Button("橡皮");Choice choice = new Choice();Choice choice1 = new Choice();(choice);(choice1);(btn1);(btn2);(btn3);(btn4);(btn5);(btn6);在工具表中,有两个下拉菜单,分别收录画笔的大小和颜色。
1.画笔的大小:("1");("3");("5");("7");("9");2.画笔颜色("黑色");("蓝色");("红色");("黄色");("绿色");3展示画板C.算法实现运用画板,首先要对工具栏按键和鼠标进行监听,然后对监听进行响应。
proe实验报告
实验一参数化草图绘制一、实验目的:1、了解Pro/E软件的基本操作。
2、掌握二维截面的绘制、编辑、及标注。
3、熟悉草图绘制中各命令的用法和作用。
二、实验设备PC机,配置:PIII450/内存128M/显卡TNT32M/硬盘10G以上。
局域网、Pro/ENGINEER4.0软件、投影仪。
三、实验内容1、熟悉草绘界面。
2、学会草绘截面的绘制和编辑。
3、学会草绘截面的几何约束及尺寸标注与修改。
4、草绘操作吊钩实例,如图1-1。
图1-1四、实验步骤:1、双击桌面的proe启动图标,进入proe软件界面,如图1-2所示。
图1-22、单击“文件”下拉菜单选“新建”按钮,弹出新建对话框,如图1-3所示。
图1-3在类型下选择“草绘”,在“名称”栏中输入“diaogou”,单击确定,进入草绘界面,如图1-4所示。
图1-43、单击“草绘”工具栏中的按钮,绘制两条中心线,单击“草绘”工具栏中的按钮,绘制两矩形并约束其关于竖直中心线对称。
吊钩柄部倒直角,单击“草绘”工具栏中的按钮,如图1-5所示。
图1-54、单击“草绘”工具栏中的按钮,以两条中心线的交点为圆心,绘制24的圆。
单击草绘工具栏中的按钮,做半径为R29的圆,再单击草绘工具栏中的按钮,约束其圆心在水平中心线上,与上一步圆心相距5个单位。
单击草绘工具栏中的按钮,吊钩柄部矩形分别和两圆倒角R36、R24。
单击草绘工具栏中的按钮,动态修剪面曲线,如图1-6所示。
图1-65、在图形左下侧做直径为48的圆。
单击草绘工具栏中的按钮,约束圆心和水平中心线相距9个单位;单击草绘工具栏中的按钮,约束和中心圆相外切。
任意做直径为28的圆,单击草绘工具栏中的按钮,约束圆心在水平中心线上,如图1-7所示。
图1-76、单击草绘工具栏中的按钮,在直径为28圆的右上位置单击,作为第一个圆角对象;在直径为48圆的右上位置单击,作为第二个圆角对象,单击草绘工具栏中的按钮,动态修剪截面曲线,结果如图1-8所示。
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)设计一个程序可完成绘制直线,矩形和椭圆的功能。
MFC绘图 实验报告
基于MFC的绘图软件目录基于MFC的绘图软件11 .引言 (2)2.MFC设备上下文及绘图的基本理论知识 (2)2.1 GDI(Graphic Device Interface)绘图的实现 (2)2.2 MFC图形对象类 (2)2.3 库存的GDI对象 (3)2.4与绘图有关的简单数据类型 (4)2.5 MFC应用程序框架中的图形绘制和刷新 (5)3.设计的主体内容MFC设备描述表---CDC类 (5)3.1 CDC类及其派生类 (5)3.2 文本输出 (6)3.3CDC常用的绘图函数 (6)3.4画笔和画刷 (8)4.软件主体设计 (8)4.1 资源编辑 (8)4.2 具体实现 (11)5.结果分析与讨论 (19)6.总结 (19)附录:简单绘图软件作品说明............................................ 错误!未定义书签。
1 .引言计算机的发展也是计算机语言的发展得到了很大的提高,人们的生活中离不开图像,除了我们可以用铅笔在纸上画图外,我们也可以在电脑上绘制我们的想象,本实验就是基于VC++的一个小型的绘图软件,虽然麻雀虽小五脏俱全。
本课题就是要实现这一小小的软件。
2.MFC 设备上下文及绘图的基本理论知识2.1 GDI(Graphic Device Interface)绘图的实现图形设备接口(GDI )可以理解为一个可执行程序,它处理来自windows 应用程序的图形函数调用,然后把这些调用传递给合适的设备驱动程序,由设备驱动程构关系如下:设备描述表(DC )是一种windows 数据结构,它包含了与一个设备(如显示器)的绘制属性的相关信息。
所有的绘制操作通过一个设备上下文对象进行,该对象封装了实现绘制线条,形状和文本的windows API 函数。
设备上下文可以用来向屏幕,打印机和图元件输入结果。
2.2 MFC 图形对象类Windows 提供了多种用于在设备描述表中进行绘图的图形对象,如画笔,位图,调色板,区域,和路径等。
autocad实验报告
autocad实验报告Autocad实验报告引言:Autocad是一款广泛应用于工程设计和绘图的计算机辅助设计软件。
它提供了丰富的功能和工具,可以帮助工程师和设计师更高效地完成各种设计任务。
本实验报告将介绍我在使用Autocad进行实验时的经历和学习成果。
一、Autocad的基本操作在实验开始时,我首先学习了Autocad的基本操作。
通过掌握绘图界面的各个元素和工具栏的功能,我能够更快速地进行绘图和编辑。
例如,我学会了如何创建基本图形、调整图形的大小和位置以及添加文本和注释等。
二、绘制平面图在实验的第二部分,我尝试使用Autocad绘制了一个简单的平面图。
我使用了直线、圆和多边形等基本图形工具,按照给定的尺寸和比例绘制了建筑物的平面布局。
通过调整图层和线型,我使得图纸更加清晰易读。
三、三维建模在接下来的实验中,我学习了如何使用Autocad进行三维建模。
通过使用立方体、圆柱体和球体等基本体素,我能够创建出具有立体感的物体。
我还学会了如何应用材质和光源,使得三维模型更加真实和逼真。
四、图纸布局和打印在完成设计后,我学习了如何进行图纸布局和打印。
通过调整视口和设置打印参数,我能够将设计好的图纸按照需要的比例和尺寸打印出来。
这对于制作设计报告和展示成果非常重要。
五、Autocad的应用领域在实验过程中,我也了解到了Autocad在各个领域的广泛应用。
例如,在建筑设计中,Autocad可以帮助设计师绘制平面图、施工图和立面图等;在机械设计中,Autocad可以用于绘制零件图和装配图等。
Autocad的灵活性和强大的功能使得它成为了工程师和设计师们必不可少的工具。
结论:通过本次实验,我深入了解了Autocad的基本操作和功能。
我学会了使用Autocad绘制平面图和进行三维建模,并掌握了图纸布局和打印的技巧。
Autocad作为一款强大的计算机辅助设计软件,为工程师和设计师提供了高效、精确和便捷的设计工具。
我相信在今后的学习和工作中,Autocad将会成为我不可或缺的助手。
基因测序绘图实验报告
基因测序绘图实验报告
实验目的:
本实验旨在通过基因测序技术对样本进行绘图分析,以获取样本的基因组信息,进一步研究基因与表型之间的关系。
实验材料:
- 样本:包括DNA或RNA样本。
- 基因测序仪器:用于对样本进行测序。
- 数据分析软件:用于分析测序数据并生成测序图。
实验步骤:
1. 样本准备:从待测序的组织或细胞中提取DNA或RNA,并进行纯化和浓缩。
2. 建库:将提取的DNA或RNA进行片段化,并在片段的末
端添加适配器。
3. 测序:将建好的DNA文库进行测序,可以采用Illumina测
序技术,方法包括Illumina HiSeq、Illumina MiSeq等。
4. 数据分析:将测序得到的原始数据进行质量控制,去除低质量的reads,并将剩余的高质量reads映射到参考基因组上。
5. 可视化分析:使用数据分析软件对映射结果进行可视化处理,生成测序图。
实验结果:
通过基因测序技术,我们获得了样本的基因组序列信息,并得到了相应的测序图。
测序图可以用来探究样本的基因组结构、基因的表达模式、突变位点的分布等信息。
这些信息可以帮助我们研究基因之间的相互作用、基因与表型之间的关系,进一
步揭示基因的功能和调控机制。
结论:
基因测序绘图实验为研究基因组学和遗传学提供了有力的工具。
通过测序图的分析,可以深入了解基因的结构和功能,为进一步的研究提供基础和指导。
在未来,基因测序技术的持续发展将极大地推动基因研究和生物医学领域的发展。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
面向对象程序设计实训(基于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)函数进行序列化操作,将所绘图形的信息通过文件的形式保存起来。
2、系统总体框架图1 总体框架3、模块设计与分析3.1画图模块:该模块的大部份功能都写在了CDrawView类里面。
该模块也是此次程序的重点模块之一,主要负责画一些简单图形,例如:直线、矩形、圆角矩形、椭圆、任意曲线(铅笔)等等;有线型、线宽的设置;还有画笔颜色和填充色的选择,可以画各种各样颜色的线条;还包含的右键菜单设置的函数。
3.2窗口模块:这部分大多数都是编译器自动生成,只做了一些修改,例如:使程序一开始运行便最大话,还是自定义程序的标题。
3.3菜单模块:该部分同样大部分都是编译器自动生成的,自己增添了一部分菜单例如:绘图工具、颜色设置、线条设置等等。
还有右键弹出菜单,有颜色及线条设置等等,让使用者可以进行快速的操作。
3.4工具栏与状态栏模块:除了编译器自动生成的之外,还加入了画直线、矩形、圆角矩形、椭圆、铅笔等工具的快速选择,状态栏可以显示鼠标移动的坐标。
4、类的设计与分析4.1、CAboutDlg类由编译器生成,只做了一处的修改:m_pMainWnd->SetWindowText(_T("简单绘图工具")); //设定主框架窗口标题4.2、CDrawView类由编译器自动生成的类部分源代码:void CDrawView::OnLButtonDown(UINT nFlags, CPoint point){// TODO: Add your message handler code here and/or call default if(m_flag==0){SetCapture();::SetCursor(m_hCross);m_ptOrigin = point;m_lMouseDown = true;}else{m_ptOrigin = point;m_ptOld = point;//临时点m_lMouseDown = true;//鼠标左键被按下SetCapture(); // 将鼠标消息发送到视窗口CRect rect;GetClientRect(&rect); // 得到客户窗口的大小ClientToScreen(&rect); // 将当前窗口坐标转换成屏幕坐标ClipCursor(&rect); // 把鼠标限定在其参数指定的矩形区域内SetCursor(m_hCross); // 获得十字光标}CScrollView::OnLButtonDown(nFlags, point);}/*响应鼠标移动消息,将起点与临时点之间的线擦除*/void CDrawView::OnMouseMove(UINT nFlags, CPoint point){// TODO: Add your message handler code here and/or call default CString str;str.Format("x=%d,y=%d",point.x,point.y);//得到框架类窗口的指针GetParent(),然后指针强制转换为框架类的类型(CMainFrame*)//调用状态栏类的成员函数setWidnowText((CMainFrame*)GetParent())->m_wndStatusBar.SetWindowText(str);if( m_lMouseDown ){//初始化CClientDC dc(this);CPen pen(m_vLineStyle,m_vLineWidth,m_color);dc.SelectObject(&pen);CBrush brush; //定义画刷CPen * pOldPen = dc.SelectObject(&pen);//将画笔选入DC,并保存以前所用的画笔brush.CreateSolidBrush(m_fColor); //创建画刷dc.SelectObject(&brush); //获取画刷if(m_flag==0){CClientDC dc(this);CPen pen(m_vLineStyle,m_vLineWidth,m_color);dc.SelectObject(&pen);CDrawDoc *pDoc = GetDocument();ASSERT_VALID(pDoc);CPoint ptOrg, ptStart, ptEnd;ptOrg = GetScrollPosition(); // 获得当前工作区原点的坐标ptStart = m_ptOrigin + ptOrg; // 加上原点的坐标来修正线段的坐标ptEnd = point + ptOrg;CCLine *pCLine = new CCLine(ptStart,ptEnd,m_vLineStyle, m_vLineWidth,m_color,m_fColor);pDoc->m_obArray.Add(pCLine);pDoc->SetModifiedFlag();dc.MoveTo(m_ptOrigin);dc.LineTo(point);m_ptOrigin = point;}switch(m_flag){case 1: //画直线dc.SetROP2( R2_NOT ); //当前绘制的像素值设为屏幕像素值的反,这样可以覆盖掉上次的绘图,(自动擦除上次绘制的图形)dc.SelectStockObject(NULL_BRUSH);//使图线不遮去原有背景dc.MoveTo( m_ptOrigin ); //这两行代码擦除从起点到dc.LineTo( m_ptOld ); //上次鼠标移动到的位置之间的临时线dc.SelectObject(&pen);dc.MoveTo( m_ptOrigin ); //这两行代码从起点到鼠标当前位置画线dc.LineTo( point ); //break;case 2: //画矩形dc.SetROP2( R2_NOT );dc.SelectStockObject(NULL_BRUSH);dc.Rectangle(CRect(m_ptOrigin,m_ptOld));dc.SelectObject(&pen);dc.Rectangle(CRect(m_ptOrigin,point));break;case 3: //画圆角矩形dc.SetROP2( R2_NOT );dc.SelectStockObject(NULL_BRUSH);dc.RoundRect(CRect(m_ptOrigin,m_ptOld),CPoint(15, 15));dc.RoundRect(CRect(m_ptOrigin,point),CPoint(15, 15));break;case 4: //画椭圆dc.SetROP2( R2_NOT );dc.SelectStockObject(NULL_BRUSH);dc.Ellipse(CRect(m_ptOrigin,m_ptOld));dc.Ellipse(CRect(m_ptOrigin,point));break;case 5: //画圆,将椭圆的长轴长度与短轴长度相同即可dc.SetROP2( R2_NOT );dc.SelectStockObject(NULL_BRUSH);dc.Ellipse(m_ptOrigin.x,m_ptOrigin.y,m_ptOld.x,m_ptOrigin.y+m_ptO ld.x-m_ptOrigin.x);dc.Ellipse(m_ptOrigin.x,m_ptOrigin.y,point.x,m_ptOrigin.y+point.x -m_ptOrigin.x);break;}//switch 结束dc.SelectObject(pOldPen);//恢复先前的画笔m_ptOld = point;}//if 结束CScrollView::OnMouseMove(nFlags, point);}void CDrawView::OnLButtonUp(UINT nFlags, CPoint point){// TODO: Add your message handler code here and/or call default if(m_flag==0){if( m_lMouseDown ){m_lMouseDown = false;ReleaseCapture();ClipCursor( NULL );}}else{if( m_lMouseDown ){m_lMouseDown = false;CClientDC dc(this);CPen pen(m_vLineStyle,m_vLineWidth,m_color);dc.SelectObject(&pen);CBrush brush; //定义画刷brush.CreateSolidBrush(m_fColor); //创建画刷dc.SelectObject(&brush); //获取画刷CPen * pOldPen = dc.SelectObject(&pen);ReleaseCapture();ClipCursor( NULL );switch(m_flag){case 1: //画直线dc.SetROP2( R2_COPYPEN );//使用当前的画笔的颜色dc.MoveTo( m_ptOrigin ); //这两行代码从起点到鼠标当前位置画线dc.LineTo( point ); //break;case 2: //画矩形dc.Rectangle(CRect(m_ptOrigin,point));break;case 3: //画圆角矩形dc.RoundRect(CRect(m_ptOrigin,point),CPoint(10,15));break;case 4: //画椭圆dc.SetROP2( R2_COPYPEN );dc.Ellipse(CRect(m_ptOrigin,point));break;case 5: //画圆dc.SetROP2( R2_COPYPEN );dc.Ellipse(m_ptOrigin.x,m_ptOrigin.y,point.x,m_ptOrigin.y+point.x -m_ptOrigin.x);break;}//switch 结束//实现文件保存,将各图形类的地址保存在CObArray m_obArray数组中CDrawDoc* pDoc = GetDocument(); //得到文档类指针CShape *pShape ;CPoint ptOrg;ptOrg = GetScrollPosition(); // 获得当前工作区原点的坐标m_ptOrigin = m_ptOrigin + ptOrg; // 加上原点的坐标来修正线段的坐标point = point + ptOrg;switch(m_flag){case 1:pShape = new CLine(m_ptOrigin,point,m_vLineStyle, m_vLineWidth,m_color,m_fColor);break;case 2:pShape = new CRectangle(m_ptOrigin,point,m_vLineStyle, m_vLineWidth,m_color,m_fColor);break;case 3:pShape = new CRoundRect(m_ptOrigin,point,m_vLineStyle, m_vLineWidth,m_color,m_fColor);break;case 4:pShape = new CEllipse(m_ptOrigin,point,m_vLineStyle, m_vLineWidth,m_color,m_fColor);break;case 5:pShape = new CCircle(m_ptOrigin,point,m_vLineStyle, m_vLineWidth,m_color,m_fColor);break;}pDoc->m_obArray.Add(pShape);pDoc->SetModifiedFlag();}//if 结束m_lMouseDown = false;}CScrollView::OnLButtonUp(nFlags, point);}4.3、CMainFrame类主要由编译器生成,做了小部分修改://工具条的风格if (!s_ShapeToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_LEFT| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||!s_ShapeToolBar.LoadToolBar(IDR_SHAPETOOLBAR)){TRACE0("Failed to create toolbar\n");return -1; // fail to create}int nCount =s_ShapeToolBar.GetToolBarCtrl().GetButtonCount();//设置工具条按钮能被按下并且弹起for(int i=0;i<nCount;i++){s_ShapeToolBar.SetButtonStyle(i,TBBS_CHECKGROUP);}s_ShapeToolBar.EnableDocking(CBRS_ALIGN_ANY);//以下两行使形状工具条和标准工具条具有停靠能力,并且可以停靠在任何地方m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);EnableDocking(CBRS_ALIGN_ANY);DockControlBar(&m_wndToolBar);DockControlBar(&s_ShapeToolBar,AFX_IDW_DOCKBAR_LEFT,NULL);//使形状工具条停靠在客户区左边。