画图板程序报告
- 格式:doc
- 大小:453.00 KB
- 文档页数:33
绘图工具用户签名: 刘建开发成员:刘建开发时间: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用户分析普通用户看待一个软件的好坏主要是程序的实用性,界面的简洁美观性,程序所占资源的大小,以及程序运行期间的人性化的设置,所以要想让用户满意就要做到以上几点。
其中,这几点最重要的就是程序的实用性。
绘图工具,对于生活中的普通人来说,只要能实现简单的绘图,填充功能就行了。
合肥学院计算机科学与技术系课程设计任务书2011~2012学年第二学期课程JA V A语言课程设计课程设计名称画图板专业班级08网络工程(1)指导教师金莹郭昌建2011年9月一、课程设计目的通过课程设计,学生在下述各方面的能力应该得到锻炼:(1)进一步巩固、加深学生所学专业课程《JAVA语言教程》的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。
(2)全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。
(3)利用所学知识,开发小型应用系统,掌握运用JAVA语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。
(4)掌握自顶而下的设计方法,将大问题进行模块化,领会结构化程序设计的方法。
(5)熟练掌握JA V A语言事件处理、图形界面、多媒体编程,灵活运用各种类库。
二、课程设计名称及内容课程设计名称:画图板设计内容:制作一个图形编辑系统—画图板,要求具有画笔、画各种图型,输入文字,橡皮檫等功能,具体参见附件中“画图板”。
三、任务和要求(1)能用拖橡皮檫的手法绘制各类图形(直线、椭圆、矩形、文字)(2)支持画笔颜色、文字大小设置;(3)能将画面中的所有图形存储到文件中;(4)能从文件读取图形进行增补;(5)采用对话框获取图形文件名;(6)利用鼠标选取图形,删除;四、设计方案提示可以采用橡皮筋技术来进行图形的绘制,绘制图形时鼠标的初始位置很关键,它关系到图形的初始位置,由于是在鼠标处于拖动状态下绘制图形,可以将鼠标按下时的位置设置为初始位置。
五、其它程序设计可在Eclipse、JDK1.5或JBuilder环境下实现六、参考资料[1]吕凤羽、马皓《JAVA程序设计》清华大学出版社[2] 耿祥义《JAVA课程设计》清华大学出版[3] 黄小东《Java课程设计案例精编》中国水利水电出版社[4]印旻《Java与面向对象程序设计》清华大学出版社。
目录1 引言................................................................................................... 错误!未定义书签。
课程设计选题 .................................................................................. 错误!未定义书签。
课程设计的目的 .............................................................................. 错误!未定义书签。
本选题的设计背景.......................................................................... 错误!未定义书签。
2 需求分析 .............................................................................................. 错误!未定义书签。
功能需求......................................................................................... 错误!未定义书签。
软件开发运行环境........................................................................ 错误!未定义书签。
3 总体设计 .............................................................................................. 错误!未定义书签。
青岛理工大学琴岛学院设计报告课题名称:画图板学院:青岛理工大学琴岛学院专业班级:计算机网络技术101班学号:20100312010学生:李经纬指导教师:张秀国青岛理工大学琴岛学院教务处2011年 12 月 30 日一、需求分析1.选题:程序的原型最先是老师在上课时演示的,老师指导我们做画图只能实现单一的画线功能,只可以画出直线或者图形,每次只能画出当前图形之前画出的图形不再显示,而且上课的时候只能实现几个颜色的画图,无法实现填充画图以及自由选择颜色。
经过查阅资料,手动添加了一些代码和函数实现了这些功能。
2.界面:(1)程序打开界面如下图1所示:图1 打开界面(2)程序打开界面如下图2所示:图2 设置界面3.功能划分:本画图板可以实现的功能主要有画点,画直线,画圆,画矩形,任意直线,设置直线颜色,设置填充颜色还有线条类型。
(1)画图菜单子菜单中可以选择画图形的方式,可以画出的图形有点、直线、矩形,椭圆、以及任意直线。
(2)选择画点功能可以在任意位置画出一个点,默认像素为1,颜色为黑色。
(3)选择画矩形可以画出一个由默认白色填充的矩形,关于填充色可以在颜色中进行选择自定义颜色。
(4)椭圆也可以实现和矩形相同的功能。
(5)可以选择画曲线。
(6)颜色菜单下可以选择图形颜色以及填充色。
(7)点击帮助可显示版本信息以及作者。
(8)设置菜单中有线段粗细和类型的选择及预览程序运行实现效果如下图3所示:图3.运行实现界面图4.版权信息4.用到的类表格、每个类中用到的函数及添加的命令响应表格、各资源对应的ID号表格:表1 用到的类表2 CMyDrawView类用到的函数及命令响应1.直线图元类的实现在头文件中添加如下代码,定义函数以及参数在CLine类下添加消息处理函数CShape(),添加代码:class CLine :public CShape{……CLine(COLORREF m_clrShape,CPoint m_ptOrigin,CPoint m_ptEnd,UINT m_nLineWidth,int m_nLineStyle);void Serialize(CArchive &archive);void Draw(CDC *pDC);public:COLORREF m_clrShape;CPoint m_ptOrigin,m_ptEnd;UINT m_nLineWidth;int m_nLineStyle;……};这样就实现了画直线的功能,其中CLine()表示绘制纯虚函数,参数为设备指针。
设计报告: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点、直线、矩形、椭圆的绘制(周峰谢程焜)对于直线、矩形和椭圆,在绘制时都可有两点来确定其图形。
JAVA 期末画板实验报告课程题目:运用JAVA 语言编写一个画板程序,这个画板要有画图,特殊图形绘 制,颜色改变,画笔大小改变等功能. 设计思想:1. 发展界面设计2. 发展算法实现3. 运行调试4. 总结问题设计过程:A. 界面设计新建一个 Jframe 容器 , 然后定义一个 panel 〔 Panelconvas2〕,convas2 是工具栏.用 borderlayout 布置容器的边框布局, 将工具栏放在 NORTH 局部.完成界面设计.添加工具按键Panel canvas2 Panel<>;Button btn1 Button<"直线">;Button btn2 Button<"椭圆">;add<canvas2,BorderLayout.NORTH >;Button Button Button Button Choice Choice btn3btn4btn5btn6Button<"矩形">;Button<"去除">;Button<"画笔">;Button<"橡皮">; choiceChoice<>; choice1Choice<>;canvas2 .add<choice>;canvas2 .add<choice1>;canvas2 .add<btn1>;canvas2 .add<btn2>;canvas2 .add<btn3>;canvas2 .add<btn4>;canvas2 .add<btn5>;canvas2 .add<btn6>;在工具表中,有两个下拉菜单,分别收录画笔的大小和颜色.1. 画笔的大小:choice1 .add<"1">;choice1 .add<"3">;choice1 .add<"5">;choice1 .add<"7">;choice1 .add<"9">;2. 画笔颜色choice .add<"黑色">;choice .add<"蓝色">;choice .add<"红色">;choice .add<"黄色">;choice .add<"绿色">;3 展示画板B. 算法实现运用画板,首先要对工具栏按键和鼠标发展监听,然后对监听发展响应.运行相应程序发展画图1. 监听程序展示:choicechoice1btn1 .addActionListener<btn2btn3btn4btn5btn6addMouseListener<;addMouseMotionListener<;2. 按键监听响应监听到按键后,判断当前会话工具actionPerformed<ActionEvent e>{btn1>>{a= '1';}btn2>>{a= '2';}btn3>>{a= '3';}btn4>>{.getGraphics<>;.getHeight<>>;}btn5>>{a= '4';}btn6>>{a= '5';}}定义一个变量a,对按键监听发展响应,例如当监听到btn1 时赋值a=‘1’〔a 为char 型〕, 即当前工具为直线.但是当监听到btn4 时不发展对a 赋值而是直接发展去除操作, 由于去除操作是对画布发展去除,不参预鼠标事件, 因此可以直接执行.3. 鼠标监听响应a. 鼠标按钮按下事件,获取画图起始坐标x0,y0.mousePressed<MouseEvent e>{x0=e.getX<>;y0=e.getY<>;}b. 鼠标挪移事件mouseMoved<MouseEvent e>{}c. 鼠标按钮松开事件,此次响应完成对直线,椭圆,矩形发展绘制.mouseReleased<MouseEvent e>{.getGraphics<>;sizeBasicStroke<con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL>;g.setColor<b>;g.setStroke<size>;a>{'1':g.drawLine<x0, y0, e.getX<>, e.getY<>>;'2':g.drawOval<x0, y0, e.getX<> - x0, e.getY<> - y0>;'3':g.drawRect<x0, y0, e.getX<> - x0, e.getY<> - y0>;}}d. 鼠标进入事件:e. 鼠标离开事件:mouseDragged<MouseEvent e> {.getGraphics<>;size BasicStroke<con ,BasicStroke.CAP_BUTT ,BasicStroke.JOIN_BEVEL >;g.setColor<b >;g.setStroke<size >;a >{'4':g.drawLine<x0, y0, e.getX<>, e.getY<>>;x0 = e.getX<>;y0 = e.getY<>;'5':g.clearRect<x0 - 10, y0 - 10, 20, 20>;g.鼠标拖动事件: 此次响应实现画笔〔随笔划〕 ,橡皮的绘制 .. f.鼠标单击事件:x0 = e.getX<>;y0 = e.getY<>;}}4.下拉列表响应a.颜色下拉列表响应:choice>{choice .getSelectedIndex<>==0>b=Color.black;choice .getSelectedIndex<>==1>b=Color.BLUE;choice .getSelectedIndex<>==2>b=Color.red;choice .getSelectedIndex<>==3>b=Color.yellow;choice .getSelectedIndex<>==4>b=Color.green;}调用choice.getSelectedIndex<>返回被选中的选项的序号〔下拉列表中第一个选项序号为0,挨次递加.〕即发展选择颜色的操作b.画笔大小下拉列表响应:choice1>{choice1 .getSelectedItem<>=="1">{con=1;}choice1 .getSelectedItem<>=="3">{con=3;}choice1 .getSelectedItem<>=="5">{con=5;}choice1 .getSelectedItem<>=="7">{con=7;}choice1 .getSelectedItem<>=="9">{con=9;}}调用choice1.getSelectedItem<>返回被选中选项的标签文本字符串,即确定画笔的大小〔con〕.5.工具栏工具实现程序详解〔1〕.getGraphics<>;size=con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL>;g.setColor<b>;g.setStroke<size>;绘制图形用到类Graphics2D,其中包括不少绘制图形的方法, 定义一个Graphics2D类g,用getGraphics<>来得到一个Graphics2D对象,它相当于组建的绘图环境,可以发展各种绘图操作.个根本集合,这些图元使用Graphics2D 对象呈现,而该对象的Stroke 属性设置为此BasicStroke.其中con为画笔宽度路径和虚线线段外角,将路径线段连接在一起. 〔以上内容为网上查找资料所得.〕〔2〕实现直线,椭圆,矩形绘制:a>{'1':g.drawLine<x0, y0, e.getX<>, e.getY<>>;'2':g.drawOval<x0, y0, e.getX<> - x0, e.getY<> - y0>;'3':g.drawRect<x0, y0, e.getX<> - x0, e.getY<> - y0>;}〔3〕随笔划和橡皮a>{'4':g.drawLine<x0, y0, e.getX<>, e.getY<>>;x0 = e.getX<>;y0 = e.getY<>;'5':g.clearRect<x0 - 10, y0 - 10, 20, 20>;x0 = e.getX<>;y0 = e.getY<>;break ;}6.主类程序得以运行的入口,进入主类后即运行litao 〔〕类.C.调试运行调试运行后得到了画板和预期的所有功能,实现结果展示:D.遇到问题1.绘制完成后,将窗口最大化或者最小化后再打开,原本绘制的图形消失.尚未解决.2.确定画笔大小时不得要领,后来通过查找资料解决.附表1:源程序:import java.awt.*;import java.awt.event.*;import javax.swing.JFrame;public class litao extends JFrame implements MouseMotionListener,MouseListener,ActionListener, ItemListener {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<>;Color b;int x0,y0;char a='4';int con=1;BasicStroke size;private static Color[] colors = { Color.black, Color.blue, Color.red,Color.yellow, Color.green };public litao<>{choice1.add<"1">;choice1.add<"3">;choice1.add<"5">;choice1.add<"7">;choice1.add<"9">;choice.add<"黑色">;choice.add<"蓝色">;choice.add<"红色">;choice.add<"黄色">;choice.add<绿"色">;canvas2.add<choice>;canvas2.add<choice1>;canvas2.add<btn1>;canvas2.add<btn2>;canvas2.add<btn3>;canvas2.add<btn4>;canvas2.add<btn5>;canvas2.add<btn6>;choice.addItemListener<this>; choice1.addItemListener<this>;btn1.addActionListener<this>;btn2.addActionListener<this>;btn3.addActionListener<this>;btn4.addActionListener<this>;btn5.addActionListener<this>;btn6.addActionListener<this>; addMouseListener<this>; addMouseMotionListener<this>;add<canvas2,BorderLayout.NORTH>; setBackground<Color.white>;canvas2.setBackground<Color.blue>; this.setBackground<Color.white>; setSize<800, 600>;setVisible<true>;}public void paint<Graphics g>{}public void actionPerformed<ActionEvent e> { if<e.getSource<>.equals<btn1>>{a='1';}if<e.getSource<>.equals<btn2>>{a='2';}if<e.getSource<>.equals<btn3>>{a='3';}if<e.getSource<>.equals<btn4>>{Graphics g = this.getGraphics<>;g.clearRect<0, 0, this.getWidth<>, this.getHeight<>>;}if<e.getSource<>.equals<btn5>>{a='4';}if<e.getSource<>.equals<btn6>>{a='5';}}public void mousePressed<MouseEvent e>{x0=e.getX<>;y0=e.getY<>;}public void mouseMoved<MouseEvent e>{}public void mouseReleased<MouseEvent e>{Graphics2D g = <Graphics2D>this.getGraphics<>;size=newBasicStroke<con,BasicStroke.CAP_BUTT,BasicStroke. JOIN_BEVEL>;g.setColor<b>;g.setStroke<size>;switch<a>{case '1':g.drawLine<x0, y0, e.getX<>, e.getY<>>;break;case '2':g.drawOval<x0, y0, e.getX<> - x0, e.getY<> - y0>;break;case '3':g.drawRect<x0, y0, e.getX<> - x0, e.getY<> - y0>;break;}}public void mouseEntered<MouseEvent e>{}public void mouseExited<MouseEvent e>{}public void mouseClicked<MouseEvent e>{}public void mouseDragged<MouseEvent e> { Graphics2D g = <Graphics2D>this.getGraphics<>;size=newBasicStroke<con,BasicStroke.CAP_BUTT,BasicStroke. JOIN_BEVEL>;g.setColor<b>;g.setStroke<size>;switch<a>{case '4':g.drawLine<x0, y0, e.getX<>, e.getY<>>;x0 = e.getX<>;y0 = e.getY<>;break;case '5':g.clearRect<x0 - 10, y0 - 10, 20, 20>;x0 = e.getX<>;y0 = e.getY<>;break;}}public void itemStateChanged<ItemEvent e> { if<e.getSource<>==choice>{if<choice.getSelectedIndex<>==0>b=Color.black;if<choice.getSelectedIndex<>==1>b=Color.BLUE;if<choice.getSelectedIndex<>==2>b=Color.red;if<choice.getSelectedIndex<>==3>b=Color.yellow;if<choice.getSelectedIndex<>==4>b=Color.green;}if<e.getSource<>==choice1>{if<choice1.getSelectedItem<>=="1">{con=1;}else if<choice1.getSelectedItem<>=="3"> {con=3;}else if<choice1.getSelectedItem<>=="5"> {con=5;}else if<choice1.getSelectedItem<>=="7"> {con=7;}else if<choice1.getSelectedItem<>=="9">{con=9;}}}public static void main<String[] args> { new litao<>;}}。
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.选择“随手画”,用鼠标就可以在试图中随手画画。
一、实验背景随着计算机技术的不断发展,图形处理软件在日常生活中得到了广泛应用。
为了提高图形绘制的便捷性和多样性,本实验旨在设计并实现一个功能强大的超级画板程序。
该程序能够满足用户绘制点、线、多边形、椭圆等图形的基本需求,并具备保存、打开自定义图形文件的功能。
二、实验目的1. 掌握Java图形界面编程技术;2. 熟悉面向对象编程思想;3. 培养动手实践能力,提高编程水平。
三、实验内容1. 软件系统分析和设计方案(1)功能需求分析超级画板程序应具备以下功能:1)绘制基本图形:点、直线、多边形、椭圆等;2)编辑图形:移动、缩放、旋转、翻转等;3)保存和打开自定义图形文件;4)设置画板背景颜色、线条颜色、填充颜色等;5)支持鼠标和键盘操作。
(2)结构设计过程超级画板程序界面主要由以下三个部分组成:1)菜单栏:包含文件、编辑、帮助等常见功能菜单,实现打开保存文件等功能;2)工具栏:主要包括画笔、矩形、椭圆、直线、刷子、橡皮、文字、颜色等工具,可完成一些基本操作;3)画板:能够编辑处理图片及文字。
在代码实现上,采用面向对象的思想,将上述组件封装与一个画板类中布局并实现功能。
通过一个窗框类实现画板对象,最后在主类中建立窗框对象。
2. 软件实现和代码编写以下为部分代码及详细注释:```java// 画板类public class DrawingBoard {// 画板面板private JPanel drawingPanel;// 构造函数public DrawingBoard() {// 创建画板面板drawingPanel = new JPanel() {// 重写鼠标事件@Overridepublic void mousePressed(MouseEvent e) {// ...(此处省略具体实现)}// ...(此处省略其他鼠标事件)// 重写键盘事件@Overridepublic void keyPressed(KeyEvent e) {// ...(此处省略具体实现)}// ...(此处省略其他键盘事件)};// 设置画板面板的背景颜色drawingPanel.setBackground(Color.WHITE);// 添加画板面板到窗框add(drawingPanel);}}// 主类public class SuperDrawingBoard {// 主函数public static void main(String[] args) {// 创建窗框对象JFrame frame = new JFrame("超级画板");// 创建画板对象DrawingBoard drawingBoard = new DrawingBoard();// 将画板对象添加到窗框frame.add(drawingBoard);// 设置窗框属性frame.setSize(800, 600);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 显示窗框frame.setVisible(true);}}```四、实验总结通过本次实验,我们成功实现了超级画板程序,具备绘制基本图形、编辑图形、保存和打开自定义图形文件等功能。
简单画图程序1 基本功能描述1) 在单文档菜单中,在菜单行中可插入一个菜单项,命名为绘图,在下拉菜单中可分别设置绘制的图形形状,如直线、矩形及椭圆,随手画选项,有1-5可供选择,按默认的画笔,画刷来绘制选择的图形。
2) 选择好图形后,通过鼠标可以绘制出相应的直线,矩形或椭圆,鼠标的按下确定图形的起点,鼠标的拖动则确定了图形的终点,即通过鼠标的拖动来决定图形的大小,当鼠标弹起,此图形则绘制完毕。
2 设计思路1) 对需要用到的变量进行初始化。
2) 选择相应的图形之后就响应相应的消息处理函数。
选择不同的线宽,即可改变画笔的属性。
3) 鼠标的按下响应函数OnLButtonDown(),捕捉鼠标当前位置得到起点的坐标,鼠标的拖动响函数OnMouseMove()改变终点的坐标,鼠标的弹起响应OnLButtonUp(),确定终点坐标,刷新,得到绘制图形。
4) 选择图形或其它属性,可进行下一次绘制。
3 软件设计3.1 设计步骤1)创建单文档创建一个MFC AppWizard[exe]工程,命名为“draw”,,并创建单文档。
创建成功后,系统自动生成相应的类。
2)编辑菜单添加需要的菜单项,并在菜单的属性中设定好所对应的ID,(其中线宽菜单为弹出菜单,只需在菜单项目属性中的弹出选项前打勾即可,分隔线亦只需在菜单项目属性中选中分隔符选项即可)。
建立类向导,在视图类CdrawView中,对各菜单项添加对应的COMMAND消息处理函数,部分菜单项还添加对应的UPDATE_COMMAND_UI消息函数,。
建立类向导在插入处选择资源,新建工具栏,在工具栏上添加相应的按钮,在属性处更改其ID,4)在相应消息函数处添加代码,实现其功能建立类向导,在视图类CdrawView中,添加WM_PAINT消息,以及WM_LBUTTONDOWN、WM_LBUTTONUP、WM_MOUSEMOVE消息,并在其中添加相应的代码。
3.3 关键功能实现1)选择要绘制的图形在直线、矩形以及椭圆的消息处理函数里为shape分别赋值为1,2,3,在OnPaint()函数里添加3个if语句的代码来这实现这三个图形的绘制:当选择画直线时,shape=1,则执行绘制直线代码,当选择画矩形时,shape=2,则执行绘制矩形的代码,当性选择画椭圆时,shape=3,则执行绘制椭圆的代码。
画图板
学生姓名曾思哲
院系名称信息工程学院
专业名称计算机科学与技术班级计算机1班
学号
指导教师谢红标
完成时间2014年6月4日
项目可行性报告
1引言
《画图板软件开发和设计》
该画图板在图形界面下可以画椭圆,正圆,矩形,正方形,填充颜色,添加字符等基本功能。
1.2课程设计的目的
巩固和加深以Java 语言为基础的面向对象编程技术理论知识的理解,提高实际动手编程能力的培养,掌握以Java为核心的应用软件开发方案,达到能独立阅读、编制和调试一定规模的Java程序的水平, 程序通过调用JAVA提供的基本类进行了简单的界面设计,运用了JAVA中类的继承特性实现了对父类方法的调用,并多次使用CASE语句实现绘图菜单的选择,运用了适配器类简化了监听器类的重写工作。
1.3本选题的设计背景
在现实生活中,我们会经常遇到些需要绘制简单图形的问题,但是网络上大多数的绘图工具都比较复杂,所以我们需要一些简单实用的绘图小工具,以便对工作带来最大的满足与需求,于是我就设计了一个简单。