画图板程序报告.docx
- 文档编号:6972083
- 上传时间:2023-01-13
- 格式:DOCX
- 页数:28
- 大小:281.08KB
画图板程序报告.docx
《画图板程序报告.docx》由会员分享,可在线阅读,更多相关《画图板程序报告.docx(28页珍藏版)》请在冰豆网上搜索。
画图板程序报告
画图板
学生姓名
曾思哲
院系名称
信息工程学院
专业名称
计算机科学与技术
班级
计算机1班
学号
11923110
指导教师
谢红标
完成时间
2014年6月4日
项目可行性报告
1引言
《画图板软件开发和设计》
该画图板在图形界面下可以画椭圆,正圆,矩形,正方形,填充颜色,添加字符等基本功能。
1.2课程设计的目的
巩固和加深以Java语言为基础的面向对象编程技术理论知识的理解,提高实际动手编程能力的培养,掌握以Java为核心的应用软件开发方案,达到能独立阅读、编制和调试一定规模的Java程序的水平,程序通过调用JAVA提供的基本类进行了简单的界面设计,运用了JAVA中类的继承特性实现了对父类方法的调用,并多次使用CASE语句实现绘图菜单的选择,运用了适配器类简化了监听器类的重写工作。
1.3本选题的设计背景
在现实生活中,我们会经常遇到些需要绘制简单图形的问题,但是网络上大多数的绘图工具都比较复杂,所以我们需要一些简单实用的绘图小工具,以便对工作带来最大的满足与需求,于是我就设计了一个简单的绘图小工具,虽然不很常熟但是我觉得还挺实用的。
需求分析
功能需求
设计一个画图工具,能够实现画图工具、画直线、画椭圆、画多边形等功能,并且在绘图的过程中能够修改该画笔的大小以及颜色。
该画图程序还需具有橡皮擦功能。
1、这个画图程序,最基本的功能是,作为一个画图工具利用它实现在屏幕上任意绘画、书写的功能;2、利用这个画图程序,通过选择画直线、画箭头、画多边形、画矩形、椭圆、圆形等功能选项并且在屏幕上拖动鼠标操作能实现画出相应图形的功能;3、这个画图程序,还需具备橡皮擦的功能,利用这个橡皮擦能够擦除屏幕上的图案,并且此橡皮擦也应该能够改变大小;4、这个画图程序,还应该做到能够改变画笔颜色的功能;5、这个画图程序,还应该具备能够清除整个屏幕已绘制图画的功能。
2.2系统的开发运行环境
本系统集成开发环境:
MyEclipse
本系统运行环境:
windowsxp或以上版本
MyEclipse是一个开放源代码的、基于Java的可扩展开发平台。
编写代码和运行软件都很方便。
编写过程中要是有错误就有提示,非常方便用户修改代码。
项目简介
项目名称
Windows画图工具
开发人员
曾思哲
项目简介
此系统是基于Java设计和开发的一个windows画图工具,要求根据用户的实际需求,要求实现画图、图画修改等功能,系统要求界面简单,方便用户使用。
项目目的
Windows画图工具的目的对于那些初学计算机的用户想要画图非常简便、易学,界面良好。
主要技术
本系统是设计一套在windows平台下的画图工具,系统采用C/S结构。
编程环境
NetBeans6.7
项
目
特
点
方便用户使用画图工具,提高使用的效率,用户可以自己画自己需要的画面也可以用画图工具打开你的画面进行修改和删除,而且有保存格式用多种,例如jpg、gif、png、bmp等,
用户可以随意选择。
技
术
重
点
1.怎样创建多中保存的格式。
2.菜单栏功能的实现。
3.从其他文件当中读取图片、打开并修改。
4.画图软件的界面的工具功能的实现。
Windows画图工具的设计
1.1项目背景
随着社会的不断发展,人们对画面要求越来越高,对画图工具的软件提出了更高的要求。
画图工具的软件可以让用户更加节省时间,可以从其他文件找出一些图片修改一下就可以使用,比起传统的手工的画图来说,不单单是节省时间而且画面要好的多,保存起来也比较方便,下次在用的时候一找就出来了。
在比如画面的修改在这套软件上我们可以直接使用彩色,使画面更直观,而且还可以修改,画图的软件现在应用于各行各业,这款软件特别适合教学用,学生画图也是比不可缺少的。
需求分析是从客户的需求中提取出软件系统能够帮助用户解决的业务问题,通过对用户问题的分析,确定系统的功能需求。
这个步骤是对理解需求的升华,直接关系到该系统的质量。
分析的根本目的是在开发者和提出需求的人之间建立一种理解和沟通机制,因此,系统的需求分析也应该是开发人员和用户或客户一起完成的。
1.2.1画图板的性能要求
(1)统一处理的准确性和及时性。
(2)软件的开放性和可扩充性。
(3)软件的易用性和易维护性。
1.2.2画图板的功能分析
我们作的是Windows画板,再设计时应该考虑到用户的需要和画图的习惯。
所以我们需求分析的主要任务就是来了解用户画图时的习惯。
尽量让用户满意。
在此我们是先设计一个大概的程序模型让别人试试我的画图板。
第2章概要设计
2.1软件设计
1.1.1本软件是设计一套在windows平台下的画图工具,主要用于主要用于画图、打开图画类的页面修改并保存成用户需要的格式。
系统采用C/S结构,主要用于客户端,供客户学习、工作使用,本软件提供良好的界面,操作简单。
第3章详细设计
3.1模块设计
该系统由4个模块构成,分别是工具模块、储存模块、颜色模块、帮助模块。
●工具模块
画笔(PencilTool)、格式刷(BrushTool)、喷墨工具(AtomizerTool)、橡皮(EraserTool)、直线(LineTool)等主要用于不同情况的使用,在面板上方便用户的使用。
●储存模块
1判断当前画板是否保存(MyImage)。
2设置多种存储的格式供用户选择,增加文件过滤器(addFilter)。
3存储路径可以设置默认的。
●颜色模块
通过创建颜色选择器(ColorChooser),来让用户获取颜色,供用户使用。
●帮助模块
系统帮助文档和软件的声明。
3.2功能设计
主要功能如下:
1、画笔PencilTool这个类继承于AbstractTool类,PencilTool类中有个对象Tool用户通过点击画板上的图标来获取画笔,它的功能让用户用来画出各种图形。
2、格式刷子BrushTool这个类继承于AbstractTool类,它的功能让用户画出更好的图形。
3、喷墨工具AtomizerTool这个类继承于AbstractTool类,AtomizerTool类中有个对象Tool用户通过点击画板上的图标来获取喷墨图标,它的功能让用户用来涂颜色用的。
4、橡皮EraserTool这个类继承于AbstractTool类,它的功能用来修改画板上画错的线或者图形。
5、直线LineTool这个类继承于AbstractTool类,它的功能:
让用户画出更好的直线。
6、储存MyImage这个类继承BufferedImage类,主要用来判断当前的文件是否保存。
7、界面ImageFrame这个类继承Jframe类,主要用来创建界面,初始化屏幕的尺寸、设置默认画板。
总体设计
3.1系统体系结构设计
本程序主体为一个文件:
MiniDrawPad.java。
其中包括的程序段有:
1MiniDrawPad():
构造函数,用以初始化。
2chooseColor():
选择当前绘图颜色程序段。
3setStroke():
设置当前画笔粗细程序段。
4loadFile():
调用图形文件程序段。
5newFile():
新建一个图形文件程序段。
6saveFile():
保存当前所绘制图形程序段。
7creatNewItem():
新建一个基本图形单元程序段。
相应的内部类有:
1ButtonHandler:
用来处理基本图形单元的按钮事件。
2ButtonHandler1:
用来处理颜色、画壁粗细、文字输入三个操作按钮的按钮事件。
3DrawPanel:
用来创建绘图区域的子类。
4MouseA:
继承了MouseAdapter,用来完成鼠标相应事件的操作,如单击、松开、进入和离开等。
5MouseB:
继承MouseMotionAdapter,用来完成鼠标拖动和鼠标移动的相应事件操作。
此外,还继承了父类drawings的基本图形子类,如前所述,这里不再重复。
3.2系统功能模块及主要类设计
画板主要由以下几个部分组成:
3.2.1主窗体的设计。
主类(MiniDrawPad)用来生成主界面,完成画图板的主要框架。
主类由JFrame派生出来。
主界面由菜单栏、工具栏和画图区域三部分组成,布局格式采用BorderLayout布局形式。
3.2.2菜单栏和工具栏的设计。
菜单栏包括文件菜单栏、颜色菜单栏、线条粗细菜单栏和提示菜单栏。
其中①文件菜单栏包括文件的新建、打开、保存等选项;②颜色菜单栏可以进行颜色选择;③线条粗细菜单栏设置线条的粗细;④提示菜单栏给出提示信息。
工具栏由新建、打开和保存文件按钮、基本图形的按钮、选择字体风格复选框和字体下拉列表框组成。
在主类中添加并对菜单栏和工具栏添加事件监听。
3.2.3事件响应的处理。
对菜单栏、工具栏和用鼠标画图的事件响应进行处理。
(1)菜单栏中文件的新建、打开和保存菜单事件的处理:
Java把每个文件都视作顺序字节流。
如果要在Java中进行文件处理,则必须用到Java.io包。
这个包定义了一些流类,选用FileInputStream(从文件中读入数据)和FIleOutputStream(向文件输出数据),通过建立这些文件的对象便可以打开文件。
这些流相应地从InputStream和OutputStream派生,这些文件均使用文件流,所以必须将文件结构化以适应程序的要求。
我们需要对保存的对象序列化,然后以输出流的方式保存。
在程序中用newFile()、loadFile()和saveFile()三个函数分别实现文件的新建、打开和保存。
(2)工具栏事件的处理:
主要有一些Button组成。
我们用ButtonHandler内部类处理基本单元事件,ButtonHandler1内部类处理新建、打开和保存文件按钮,在画图类DrawPanel中定义CreateNewItem()函数处理工具栏中的画图事件。
(3)鼠标画图:
由于画图板主要是用来画图,所以需要在程序中添加对鼠标按下、拖动、进入、退出、移动和单机事件进行监听并进行处理。
内部类mouseA定义了完成鼠标按下、松开、进入、退出事件响应。
内部类mouseB完成鼠标拖动和移动事件响应。
4详细设计与实现
4.1绘图主界面模块
4.1.1.功能设计
在程序设计中用到了动态绑定,我们可以提取他们的公共属性,先建立一个父类,然后建立各个子类,继承父类中的方法并将父类中的draw函数重写。
一些关于图形形状的类,最主要是用于画图、字体和橡皮擦等基本类型。
如Circle、Triangle、Rectangle,它们都是有超类(Object类)派生的。
在面向对象编程中,每个类都有画出自己的能力,每个类都有自己的draw函数,但每种形状的draw函数都不一样,但在绘制任何形状时,只需简单调用父类drawing的draw方法,然后让程序动态地根据对象的类型决定使用哪个子类的draw方法。
为了使画出的图形更加美观,我们在draw函数中使用了Graphics2D的对象的引用。
这样可以在不改变原程序的情况下,添加扩展的图形,是程序变得更加强大。
同时,为了文件的保存,父类实现Serialize接口,将对象线性化。
4.1.2.界面设计
我们可以看到,整个程序界面很简洁,而且界面操作、提示内容全部是中文,一目了然。
在左上方的菜单栏里有文件、颜色、线条粗细、帮助4个下拉式菜单,可以对绘图文件进行相应的操作。
下面一排是工具栏的工具按钮,从左到右依次为:
新建文件、打开文件、保存文件、随笔画、直线、空心矩形、实心矩形、空心椭圆、空心圆、实心圆、空心圆角矩形、实心圆角矩形、橡皮擦、颜色选择按钮、线条粗细设置按钮、文字添加按钮、粗体字体选择框、斜体字体选择框、字体选择下拉式选择框。
整个工具栏是可以拖动的,可以将它拖动到程序窗口的任意位置。
工具栏下面的整个白色区域就是绘图区域,即绘图面板,它的大小可以随着窗口的大小自动调整。
在窗口的最底部是程序设计作者标注,以及鼠标状态提示条,可以显示当前的鼠标状态,包括进出窗口、移动、单击、松开等。
具体效果如下列图所示:
1.1编写目的
为了熟悉软件的开发,对过去三年的学习知识进行梳理和应用,最终选择了这个不算太难,不过很有特点的项目。
2.要求和目标
设计一个画图软件
①用户界面友好;
②能绘制基本形状的图形;
③可设置图形的颜色、线条的粗细和填充等属性;
3.具体设计思路
选择设计一个画图软件,首先要求能绘制基本形状的图形;同时可以设置图形的颜色、线条的粗细和是否填充等属性;并且可以将画好的图形保存至文件,并能从文件中读取某种格式的图像文件并显示出来。
首先,作为画图板,应该能够绘制基本的图形,像"铅笔","直线",,设置线条粗细,颜色,背景颜色的功能。
对要实现的功能类型抽象出一个公共的基类Drawing,子类Pencil,Line,Rectange,Oval,Circle,Rubber,通过继承Drawing基类来实现不同的功能。
其次当用户通过选择不同的按钮来绘制图形,这主要是利用按钮监听将不同的绘图功能绑定到不同的按钮上,通过监听用户的选择来创建不同的子类,通过子类绘制不同的图形。
4.源代码及注释
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Windows.Forms;
usingSystem.IO;
usingSystem.Drawing.Drawing2D;
usingSystem.Drawing.Imaging;
usingSystem.Diagnostics;
usingSystem.Drawing.Printing;
namespace画图板
{
publicpartialclassdrawinboard:
Form
{
//privateDrawToolsdt;
Graphicsg;//创建绘画的面板orPaneltocreatepaintings
PointpStart;PointPEnd;//定义画图颜色的起点和终点orDefinethedrawingstartpointandendpointcolor
intChoiceGraph;//所选颜色图像枚举orTheselectedcolorimage.
intpenWideth;//画图宽度
enummyselected//定义枚举
{
pencil,//定义铅笔
Line,//定义线
FillEliPse,//填充椭圆
TuoYuan,//定义空心圆
FillEllipse,
changFangXing,//长方形
Ellipse,//填充矩形
Rec,//填充空心矩形
Eraser,//橡皮擦
//椭圆
WuJiaoXing//五星红旗
};
enumPenColor
{
ff=FontStyle.Bold,
fs=FontStyle.Italic,
ss=FontStyle.Regular,
fy=FontStyle.Strikeout,
fl=FontStyle.Underline
};
stringstrin;//定义一个URl变量
publicdrawinboard()
{
InitializeComponent();
}
privatevoidForm3_Load(objectsender,EventArgse)
{
g=this.pictureBox1.CreateGraphics();//创建绘图面板
ChoiceGraph=(int)myselected.pencil;//默认选择为铅笔
penWideth=2;//初时的大小为1
}
privatevoidbutton1_Click(objectsender,EventArgse)
{
ChoiceGraph=Convert.ToInt32(((Button)sender).Tag);
}
privatevoidbutton8_Click(objectsender,EventArgse)
{
ChoiceGraph=Convert.ToInt32(((Button)sender).Tag);
}
privatevoidbutton6_Click(objectsender,EventArgse)
{
ChoiceGraph=Convert.ToInt32(((Button)sender).Tag);
}
privatevoidbutton7_Click(objectsender,EventArgse)
{
ChoiceGraph=Convert.ToInt32(((Button)sender).Tag);
}
privatevoidbutton5_Click(objectsender,EventArgse)
{
Bitmapnewpic=newBitmap(pictureBox1.Width,pictureBox1.Height);
Graphicsg=Graphics.FromImage(newpic);
g.FillRectangle(newSolidBrush(Color.White),0,0,pictureBox1.Width,pictureBox1.Height);
g.Dispose();
g=pictureBox1.CreateGraphics();
g.DrawImage(newpic,0,0);
g.Dispose();
}
privatevoidbutton4_Click(objectsender,EventArgse)
{
ChoiceGraph=Convert.ToInt32(((Button)sender).Tag);
}
privatevoidbutton3_Click(objectsender,EventArgse)
{
ChoiceGraph=Convert.ToInt32(((Button)sender).Tag);
}
privatevoidbutton14_Click(objectsender,EventArgse)
{
button14.BackColor=Color.White;
button13.BackColor=Color.White;
button12.BackColor=Color.White;
button11.BackColor=Color.White;
button10.BackColor=Color.White;
((Button)sender).BackColor=Color.Black;
penWideth=Convert.ToInt32(((Button)sender).Tag);
}
privatevoidbutton13_Click(objectsender,EventArgse)
{
button14.BackColor=Color.White;
button13.BackColor=Color.White;
button12.BackColor=Color.White;
button11.BackColor=Color.White;
button10.BackColor=Color.White;
((Button)sender).BackColor=Color.Black;
penWideth=Convert.ToInt32(((Button)sender).Tag);
}
privatevoidbutton12_Click(objectsender,EventArgse)
{
button14.BackColor=Color.White;
button13.BackColor=Color.White;
button12.BackColor=Color.White;
button11.BackColor=Color.White;
button10.BackColor=Color.White;
((Button)sender).BackColor=Color.Black;
penWideth=Convert.ToInt32(((Button)sender).Tag);
}
privatevoidbutton11_Click(objectsender,EventArgse)
{
button14.BackColor=Color.White;
button13.BackColor=Color.White;
button12.BackColor=Color.White;
button11.BackColor=Color.White;
button10.BackColor=Color.White;
((Button)sender).BackColor=Color.Black;
penWideth=Convert.ToInt32(((Button)sender).Tag);
}
privatevoidbutton10_Click(objectsender,EventArgse)
{
button14.BackColor=Color.White;
button13.BackColor=Color.White;
button12.BackColor=Color.White;
button11.BackColor=Color.White;
button10.BackColor=Color.White;
((Button)sender).BackColor=Color.Black;//选中的按钮背景色为黑色
penWideth=Convert.ToInt32(((Button)sender).Tag);//将宽度按钮的TAG值设置为画笔宽度
}
privatevoidbutton21_Click(objectsender,EventArgse)
{
ColorDialogcolorDialog1=newColorDialog();
if(((Button)sender).Text=="C")
{
if(colorDialog1.ShowDialog()==DialogResult.OK)
{
button21.BackC
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 画图板 程序 报告