201107040111 小型绘图系统
- 格式:doc
- 大小:226.00 KB
- 文档页数:15
绘图系统设计与实现目录一、绘图系统概述 (1)二、硬件系统组成 (2)(一)主机 (2)(二)外存储器 (2)(三)图形输入设备 (2)(四)图形输出设备 (3)三、软件系统概述 (4)(一)系统软件 (4)(二)支撑软件 (4)(三)计算机绘图应用软件 (4)四、图形操作的基本知识介绍 (5)(一)和类的介绍 (5)(二)和类 (5)(三)图形操作中颜色的变化 (7)五、图形绘画程序的具体实现 (11)(一)画笔操作实现 (11)(二)填充的实现 (11)(三)直线绘制的实现 (12)(四)圆形绘制的实现 (12)(五)矩形绘制的实现 (13)(六)圆角矩形的绘制实现 (13)(七)多边形绘制实现 (13)(八)喷枪的实现 (14)(九)运行程序界面 (15)六、系统测试 (16)七、结束语 (17)参考文献 (18)绘图系统设计与实现摘要自从上世纪计算机系统向绘画界的延伸以来,绘图技术已成为计算机系统不可分割的一部分。
而图形编辑器又是图形编辑软件的基础,几乎所有的图形编辑软件,都是在拥有基本图形编辑功能的基础上实现更复杂功能的。
故在图形应用非常广泛的今天,研究开发绘图系统是非常有意义的。
本文主要经过对绘图系统软硬件配置的分析,就绘图系统的设计与实现进行了合理的阐述。
在基于的操作环境中,通过对、类以与、类的应用,在绘图方面实现绘制直线、矩形、圆形等基本功能,在界面设计方面实现了对图形的操作,从而从底层对绘图系统进行简单的实现。
关键词:硬件系统组成软件系统构架图形操作与绘画技术基本绘图功能图形界面, , . , . , . , a . , , , , , , , , , .:一、绘图系统概述计算机绘图系统是基于计算机的系统,由软件系统和硬件系统组成。
其中,软件是计算机绘图系统的核心,而相应的系统硬件设备则为软件的正常运行提供了基础保障和运行环境。
另外,任何功能强大的计算机绘图系统都只是一个辅助工具,系统的运行离不开系统使用人员的创造性思维活动。
武汉工程大学计算机科学与工程学院综合设计报告设计名称:科研训练I设计题目:简单图形绘制系统学生学号:专业班级:学生姓名:学生成绩:指导教师(职称):课题工作时间:2011-12-26 至2012-1-7说明:1、报告中的第一、二、三项由指导教师在综合设计开始前填写并发给每个学生;四、五两项(中英文摘要)由学生在完成综合设计后填写。
2、学生成绩由指导教师根据学生的设计情况给出各项分值及总评成绩。
3、指导教师评语一栏由指导教师就学生在整个设计期间的平时表现、设计完成情况、报告的质量及答辩情况,给出客观、全面的评价。
4、所有学生必须参加综合设计的答辩环节,凡不参加答辩者,其成绩一律按不及格处理。
答辩小组成员应由2人及以上教师组成。
5、报告正文字数一般应不少于5000字,也可由指导教师根据本门综合设计的情况另行规定。
6、平时表现成绩低于6分的学生,取消答辩资格,其本项综合设计成绩按不及格处理。
7、此表格式为武汉工程大学计算机科学与工程学院提供的基本格式(适用于学院各类综合设计),各教研室可根据本门综合设计的特点及内容做适当的调整,并上报学院批准。
成绩评定表学生姓名:学号:班级:答辩记录表指导教师评语目录摘要 (II)Abstract (II)第一章课题背景(或绪论、概述) (1)1.1 引言 (1)第二章设计简介及设计方案论述 (2)2.1 设计目的 (2)2.2 设计思路 (2)2.3 设计原理 (2)第三章详细设计...................................................................................... ..7 3.1 菜单的响应 (7)3.1.1 菜单的创建 (7)3.1.2 菜单的响应 (7)3.2 设置对话框 (14)3.3 颜色对话框 (17)3.4 状态栏时间设置 (19)3.5 图形的保存和重绘 (21)第四章设计结果及分析 (25)4.1 程序的功能 (25)4.2 程序的优缺点 (25)总结 (26)致谢 (28)参考文献 (29)附录主要程序代码 (30)摘要简单绘图软件是利用VC++这个强大的可视化编程工具开发的,软件主要功能包括图形的绘制、线型的设置、颜色的设置,图形文件的重绘和保存等功能。
绘图系统设计及实现目录一、绘图系统概述1二、硬件系统组成2(一)主机2(二)外存储器2(三)图形输入设备2(四)图形输出设备3三、软件系统概述4(一)系统软件4(二)支撑软件4(三)计算机绘图应用软件4四、图形操作的基本知识介绍5(一)CD和CDC类的介绍5(二)CDI和CGdiobject类5(三)图形操作中颜色的变化7五、图形绘画程序的具体实现11(一)画笔操作实现11(二)填充的实现11(三)直线绘制的实现12(四)圆形绘制的实现12(五)矩形绘制的实现13(六)圆角矩形的绘制实现13(七)多边形绘制实现13(八)喷枪的实现14(九)运行程序界面15六、系统测试 16七、结束语17参考文献 18绘图系统设计及实现摘要自从上世纪计算机系统向绘画界的延伸以来,绘图技术已成为计算机系统不可分割的一部分。
而图形编辑器又是图形编辑软件的基础,几乎所有的图形编辑软件,都是在拥有基本图形编辑功能的基础上实现更复杂功能的。
故在图形应用非常广泛的今天,研究开发绘图系统是非常有意义的。
本文主要经过对绘图系统软硬件配置的分析,就绘图系统的设计及实现进行了合理的阐述。
在基于MFC的操作环境中,通过对CD、CDC类以及CDI、CGdiobject类的应用,在绘图方面实现绘制直线、矩形、圆形等基本功能,在界面设计方面实现了对图形的操作,从而从底层对绘图系统进行简单的实现。
关键词:硬件系统组成软件系统构架图形操作及绘画技术基本绘图功能图形界面Design and implementation of drawing systemAbstractSince the last century, the computer system has been extended to the painting industry, computer graphics technology has become an integral part of the system. The graphics editor graphics editing software is the foundation of almost all of the graphics editing software, are in possession of basic graphics editing capabilities based on the more complex functions. It is widely used in graphics today, research and development of graphics systems is very meaningful. This article focuses on the mapping system through the analysis of hardware and software configurations, the mapping system design and implementation of a reasonable set. MFC-based operating environment, through the CD, CDC class, and CDI, CGdiobject class applications, to achieve in the drawing to draw lines, rectangles, circles and other basic functions, implemented in the interface design of graphics operations, and thus from the underlying graphics system for simple implementation.Key words:Hardware system The software system structure Graphic operation anddrawing technology draw tools GUI计算机绘图系统是基于计算机的系统,由软件系统和硬件系统组成。
绘图设计系统介绍一、安装picasso软件1、使用本公司提供的安装光盘来安装。
此方法需要有相应的加密狗配套才可使用。
2、先复制:我的电脑—本地磁盘C----新建文件夹中的2.3系统起底板制版、横机制版系统到您的移动存储中(U盘或者移动硬盘),回去以后再拷贝到您自己的电脑相应的硬盘里去。
然后把2.3系统起底板制版里的:picasso.exe、abc2.exe、hj_cnt.exe和横机制版系统里的:temp.exe 的快捷方式发送到桌面即可使用。
二、软件分类做图时用备注:罗拉机制版的时候也可以用abc2进行编译,能更好的发现问题,特别是做罗纹的时候如果在有共用针(即四平针)的情况下,在摇床功能线上填写了R0*(针对针)的话它会提示“撞针报警”,从而及时避免撞针情况的出现;而编译的话则可顺利通过,版子上机操作的话,四平针的地方前后床的针会顶在一起从而把针顶坏。
三、界面介绍工具列实际上是下拉菜单栏的快捷方式,使用上更为便捷。
工具列 色码栏功能线坐标 比例尺标准:设定框选区,很多其它的操作均需先设定框选区,才能进行编辑。
拖曳框选区至其他的位置也能复制该图形(具体方法:在边框内的任一位置鼠标左键单击一下,拖拽鼠标到相应的位置鼠标左键再单击一下即可实现复制,在拖拽的同时如果按住CTRL 键的话就变成了移动。
框选好范围以后,如果要重新框选,在边框以外任何绘图区的位置连续鼠标左键一下右键一下,框选框就会消失。
接着就可以重新框选。
填充:在框选区内或相对封闭区域填充相应色码。
填满圈选区:1、先画好需要填充的花型。
2、再画要复制的小图。
3、圈选小图。
4、点击复制5、圈选需要填充的花型。
6、点击填满圈选区并填充花型。
插入有色码的列插入空列删除列插入有色码的行插入空行删除行换色:选择工具-换色后,出现以下对话框。
先框选所需区域,点选绘画区中需换掉的颜色,再点选色码栏中的颜色,选择执行即可。
模拟组织:在花样上显各种色码的编目资料。
简单图形绘制系统设计方案第一章课题背景引言计算机技术的发展,使人类社会进入了信息化和自动化,计算机智能识别也随着计算机的发展得到了迅速的发展。
特别是图形图像的计算机处理技术更是有了前所未有的进步和应用。
计算机识别也逐渐的从图形图像处理的大环境下分离出来作为一门新的高科技研究领域出现。
画图涉及到的学科很多,包括数字信号处理、工程数学、信息论、运筹学等,它与计算机、自动化、生物学、视觉心理和生理学、人工智能、智能信息处理等众多领域交叉、综合集成,有广泛的应用。
该软件功能与Windows 下附件中的画图软件有相似功能。
本程序是在VC6.0 平台上用MFC 所编。
绘制方面的功能主要包括绘制各种图元,包括直线、矩形、椭圆,用笔或画刷自由绘图。
绘图时可以选择各种颜色,各种线型和线宽。
该软件设计的设计思想是面向对象程序设计的思想。
面向对象技术是一个非常实用而强有力的软件开发方法。
它具有许多特色。
一是方法的唯一性,即方法是对软件开发过程所有阶段进行综合考虑而得到的。
二是从生存期的一个阶段到下一个阶段的高度连续性,即在一个阶段所用到的部分与在下一个阶段所使用的部分是衔接的,所使用的技术经过生存期每一阶段后不改变。
三是把面向对象分析(OOA)、面向对象设计(OOD)和面向对象程序设计(OOP)集成到生存期的相应阶段。
笔者作为一个初学者,所学知识有限,做这个软件主要是为了测试近期的学习成果,方便了解对MFC的学习掌握程度,以便于后期的学习。
该程序中基本上包含了笔者这一段时间在VC上付出的所有努力。
软件又MFC 单文档类工程为主要载体,其中菜单、对话框的创建以及各种消息的响应,MFC库函数的调用等,其创建过程能看出一个初学者由浅入深的过程。
软件的预期是能成为一个电脑绘图的辅助功能存在,可是软件完成后绘图功能上依然有许多方面不能满足需求。
希望读者提出宝贵的意见和建议。
第二章设计简介及设计方案论述2.1 设计目的培养学生对科学研究的认识,掌握基本的科研方法;培养学生分析问题、研究问题和解决问题的能力;培养学生动手能力和编程能力以及自主查阅资料的能力。
目录一.系统功能设计功能说明:实现基本图元(直线、圆、多边形、曲线)的绘制;功能要求:1)使用静态切分视图,将屏幕切分为左右窗格。
左窗格是控制窗格,右窗格为显示窗格。
2)使用橡皮筋技术动态演示基本图元的绘制过程。
3)基本图元的数据(几何数据和属性数据)可以交互进行输入和修改。
4)可以对二维图形进行颜色填充操作。
5)使用填充算法结合基本图形生成算法绘制下面的图形二.详细设计关于视图是直接基于mfc单文档制作,未能实现静态分切视图功能,实现在视图上部添加控制窗格和控制按钮,视图区用以绘图显示。
详细设计如图所示。
动态演示基本图元的绘制过程:动态演示图元绘制需要添加鼠标响应事件来设置,我的设计思路是这样的,以直线、矩形、圆为例。
首先添加一个鼠标左键单击事件voidCJjyyView::OnLButtonDown(UINT nFlags, CPoint point)在视图类上方定义BOOL型变量m_startRect,设置为确认左键单击可以开始画图元,定义HCURSOR m_HCross,初始化光标为十字型光标,然后用CPoint定义三个过程中需要用到的点:m_ptOrigin;m_OldPoint;m_startPoint;此时把UINT m_ndrawtype;同时定义用以判断画的是什么图形。
定义完后再视图类中CJjyyView::CJjyyView()初始化函数:m_startPoint=0;m_startRect=FALSE;m_ndrawtype=0;m_HCross=AfxGetApp()->LoadStandardCursor(IDC_CROSS);完成后再buttondown中添加关键代码:void CJjyyView::OnLButtonDown(UINT nFlags, CPoint point){ CView::OnLButtonDown(nFlags, point);m_startRect=TRUE;//鼠标左键单击,设置可以开始绘制图形m_startPoint=point; //记录起始点m_OldPoint=point;//设置老点也为起始点::SetCursor(m_HCross);m_ptOrigin = point;这样左键单击的响应事件就暂时设定终了,随后需要用到buttonup的响应事件来画出图形,使用Ctrl+W也就是mfc classwizard添加鼠标松开的响应,首先添加两行代码重置绘制标志m_startRect=FALSE;//重置绘制标志::ClipCursor(NULL);//解锁光标,即将光标恢复为默认光标然后添加获取设备句柄函数CClientDC dc(this);然后用dc.SelectStockObject(NULL_BRUSH);设置画刷为空画刷。
(CAD技术)(A)一、填空题1.通常将CATIA工具软件作为汽车行业的CAD标准,而UG则作为航空行业的标准,AUTOCAD则常用于二维图形设计的设计场合。
2. CAD软件系统的构成包括了:操作系统、语言编译系统和支撑软件三个功能层面的软件系统。
3. CAD系统按照计算机类型划分为五种配置形式:大型机CAD系统、小型机CAD 系统、工作站级CAD系、微机CAD系统和虚拟网联CAD系统。
4. 自动绘图机的工作原理是插补原理,其基本思想是以折代直或以折代曲。
5. 阴极射线管图形显示器根据其工作原理通常可分为三类,即刷新式显示器、存储管显示器、光栅显示器。
4. 采用计算机对工程手册的数据处理中,对设计资料的处理方法有程序化以及数据库数据文件存储两种。
5. 数据的物理结构也称存储结构,是数据结构在计算机中的映像。
计算机中存储结构保留着数据的两个信息,具体说有存储元素本身信息和直接后继或者直接前驱的存储位置两种。
数据结构结点信息包括两种域:数据域和指针域。
6. 树的逻辑结构中,最高层的父节点称为根节点;最下层的子节点称为叶节点;各节点之间连线称为树枝。
二叉树遍历方法中前序遍历的顺序是先根节点、再左子树、后右子树。
7. 信息在计算机中存储与管理方式一般分为两种:文件系统和数据库系统,其中文件系统几种常用文件组织形式有:顺序文件、随机文件。
8. 众多的消隐算法可以被分成两大类,即物空间算法和像空间算法。
二、简答题1.简述最小二乘法拟合曲线的基本思想。
解答:在科学实验数据处理中,往往要根据一组给定的实验数据,求出自变量x与因变量y的函数关系,这是为待定参数,由于观测数据总有误差,且待定参数ai的数量比给定数据点的数量少(即n<m),因此它不同于插值问题.这类问题不要求通过点,而只要求在给定点上的误差的平方和最小.当时,即(5.8.1)这里是线性无关的函数族,假定在上给出一组数据,以及对应的一组权,这里为权系数,要求使最小,其中(5.8.2)这就是最小二乘逼近,得到的拟合曲线为y=s(x),这种方法称为曲线拟合的最小二乘法2.工程数据库系统的主要特点是什么?解答:1、数据类型复杂2、面向复杂工程对象3、动态变化的数据类型4、数据管理的实时性3. 简述在CAD 系统造型技术中,B 样条曲线所具备的特性有哪些?解答: B 样条曲线的特性包括:1、局部性2、连续性3、几何不变性4、变差缩减性5、造型的灵活性4.简述在CAD 工程数据结构中,链表结构的种类及其应用特点,以及其逻辑结构与物理结构。
实验报告—计算机图形学实验大作业课程名称计算机图形学实验名称小型绘图系统姓名张川川学号 201107040111专业班级软件1101实 验 报 告课程名称 计算机图形学 实验名称 小型绘图系统 姓 名 张川川 学 号 201107040111 专业班级 软件1101 实验日期 2013 年 11 月 8 日 成绩 指导教师 爨莹一、实验目的1.熟悉计算机图形的生成算法2.用编程的方法实现计算机的生成算法 3.巩固计算机图形学中学到的一些理论知识 二、实验环境Windows XP PC 机 Microsoft Visual C++ 6.0 三、实验内容与步骤 1)绘制直线(1)DDA 绘制直线● 算法的原理DDA 算法是根据直线的微分方程来计算Δx 或Δy 生成直线的扫描转换算法。
在一个坐标轴上以单位间隔对线段取样, 以决定另一个坐标轴方向上最靠近理想线段的整数值。
设(x 0, y 0)为直线段的始点, (x 1, y 1)为直线段的终点, 且端点坐标均为整数, 则直线的微分方程为设|k |≤1, 则有 yi +1=kxi +1+b =k (xi +Δx )+b =yi +k Δx 上式表明, 若Δx =1, 则当x 每递增1时, y 递增k 。
扫描转换开始时, 取直线始点(x 0, y 0)作为初始坐标。
● 程序: void DDA-line(x0, y0, x1, y1, color)int x0, y0, x1, y1, color;k xyx x y y =∆∆=--0101{int x;float y, k, deltx, delty; deltx=x1-x0; delty=y1-y0; k=delty /deltx; y=y0;for(x=x0; x<=x1; x++){ putpixel(x, int(y+0.5), clolor); y=y+k; }截图:2)椭圆算法的原理中点画圆法可以推广到一般二次曲线的生成, 设椭圆的方程为 F (x ,y )=b 2x 2+a 2y 2-a 2b 2=0其中, a 为沿x 轴方向的长半轴长度, b 为y 轴方向的短半轴长度, a 、 b 均为整数。
不失一般性, 椭圆上一点(x , y )处的法向量为yi a xi b j yF i x F y x N 2222),(+=∂∂+∂∂=其中, i和j分别为沿x轴和y轴方向的单位向量。
因此判别式为d=F(x P+1, y P-0.5)=b2(x P+1)2+a2(yP-0.5)2-a2b21若d1<0, 中点在椭圆内, 则应取正右方像素, 且判别式应更新为d′=F(x P+2, y P-0.5)=b2(x P+2)2+a2(y P-0.5)2-a2b2 =d1+b2(2x P+3)1当d1≥0, 中点在椭圆之外, 这时应取右下方像素, 并且更新判别式为d′=F(x P+2, y P-1.5)=b2(x P+2)2+a2(y P-1.5)2-a2b21=d1+b2(2x P+3)+a2(-2y P+2)由于弧起点为(0, b), 因此, 第一中点是(1, b-0.5), 对应的判别式为d=F(1, b-0.5)=b2+a2(b-0.5)2-a2b2 =b2+a2(-b+0.25) 10程序class Mytuoyuan extends Canvas{int x,y,width,height;public Mytuoyuan(){setBackground(new Color(255,255,255));}public int getX() {return x;}public void setX(int x) {this.x = x;}public int getY() {return y;}public void setY(int y) {this.y = y;}public int getWidth() {return width;}public void setWidth(int width) {this.width = width;}public int getHeight() {return height;}public void setHeight(int height) {this.height = height;}public void paint(Graphics g){g.drawOval(x,y,width,height); }} //画椭圆的步骤public void actionPerformed(ActionEvent e){int x,y,w,h;try{x=Integer.parseInt(inputX.getText());y=Integer.parseInt(inputY.getText());w=Integer.parseInt(inputW.getText());h=Integer.parseInt(inputH.getText());tuoyuan.setX(x); //设置自定义画布对象的实例变量tuoyuan.setY(y);//设置自定义画布对象的实例变量tuoyuan.setWidth(w);tuoyuan.setHeight(h);tuoyuan.repaint();//重画自定义画布对象}catch(NumberFormatException ee){x=0;y=0;w=0;h=0;}}截图:3)圆算法的原理为了讨论的方便, 我们考虑中心在原点, 半径为R的圆的第22二个八分圆弧, 圆的其它部分可通过一系列的简单的反射变换得到。
也就是讨论如何从(0, R)到(R/ ,R/ )顺时针确定最佳逼近于该圆弧的像素序列。
中心在原点, 半径为R的圆的方程为x2+y2=R2若令F(x,y)=x2+y2-R2, 则上述方程为 F(x, y)=0如图所示, 假定x坐标为x P的像素中最佳逼近理想圆弧的为P(x, y P), 那么, 下一个像素只能是正右方的P1(x P+1, y P)或右下P方的P2(x P+1, y P-1)两者之一。
引入P1和P2的中点M(x P+1, y P-0.5),当M在圆内时, 应取P1(x P+1, y P)为下一个像素, 否则, 应取P(x P+1, y P-1)为下一个像素。
为此, 构造判别式2d=F(M)=F(x+1, y P-0.5)=(x P+1)2+(y P-0.5)2-R2P中点画圆法若d<0, 则应取P1(x P+1, y P)为下一个像素, 而且再下一个像素的判别式为d′=F(x+2, y P-0.5)=(x P+2)2+(y P-0.5)2-R2=d+2x P+3P而d≥0, 则应取P2(x P+1, y P-1)为下一个像素, 而且再下一个像素的判别式为d′=F(x+2, y P-1.5)=(x P+2)2+(y P-1.5)2-R2 =d+2(x P-y P)+5P由于第一个像素是(0,R), 因而d的初始值为d=F(1, R-0.5)=1.25-R程序void Bresenham-Circle(r, color)Int r, color;{ int x, y, delta, delta1, delta2, direction;x=0; y=r;delta=2*(1-r);while(y>=0){ putpixel(x, y, color); if(delta<0){ delta1=2*(delta+y)-1;if(delta1<=0) diretion=1; else direction=2;}else if(delta>0){ delta2=2*(delta-x)-1; if(delta2<=0) direction=2; else direcion=3;}else direction=2;switch(direction){ case 1:x++;delta+=2*x+1;break;case 2: x++;y--;delta+=2*(x-y+1)break;case 3: y--;delta+=(-2*y+1);break;}}}截图:4)曲线(1)三次Bezier 曲线的绘制 算法的原理Bézier 曲线是法国雷诺汽车公司的工程师Pierre Bézier 于1962年提出的, 它将函数逼近同几何表示结合起来, 目的在于使设计师在计算机上能得心应手地绘图。
Bézier 曲线在各种CAD 系统中有广泛的应用。
假设给出n +1个控制点的位置矢量Pi (i =0, 1, 2, …, n ), 则n 次Bézier 多项式函数为由控制点Pi (i =0, 1, 2, …, n )中相邻两点的连线构成的折线集称为Bézier 特征多边形。
Bézier 曲线的形状逼近于特征多边形的形状, 起点和终点与多边形的起点、 终点重合, 且多边形的第一条边和最后一条边表示了曲线在起点和终点处的切矢量方向。
Bi,n(t)是Bernstein 基函数, 也是Bézier 曲线的调和函数。
Bézier 曲线的性质由它的调和函数所决定。
如图所示的是一条三次Bézier 曲线。
10)()(0,≤≤=∑=u u B P u C ni n i i ni t t i n i n t t C t B in i i n ii n n i ,,2,1,0)1()!(!!)1()(, =--=-=--三次Bézier 曲线算法实现公式:截图 :5)二维变换 (1)平移程序:public void setpingyi() { String input1;input1=JOptionPane.showInputDialog ; m=Float.parseFloat(input1); String input2;input2=JOptionPane.showInputDialog ; l=Float.parseFloat(input2); a=1;b=0;P 1P 0P 3P 2332212033,3)1(3)1(3)1()()(P t P t t P t t P t t B P t C i i i +-+-+-==∑=c=0;d=1;}截图:(平移直线)平移前平移后(2)缩放程序:public void setsuofang(){String input;input=JOptionPane.showInputDialog;a=Float.parseFloat(input);String input1;input1=JOptionPane.showInputDialog;d=Float.parseFloat(input1);m=313*(1-a);b=0;c=0;l=240*(1-d);}截图:缩放前缩放后四、实验结果与分析1.主界面显示:2.画板的相关操作:(1)绘制基本图形绘图时,单击工具栏上相应图形的图标,然后用鼠标拖动,在绘图区域内进行绘图即可。