您的当前位置:首页windows绘图板资料

windows绘图板资料

2021-12-01 来源:乌哈旅游
Windows绘图系统的设计与实现

滨江学院

软件工程课程设计报告

( 2013 -- 2014 年度第 1学期)

课程名称: 软件工程课程设计 题 目: Windows绘图板的设计与实现 专 业: 计算接科学与技术 班 级: 计科1班 学 号: 20112308021 姓 名: 王昊 指导教师: 李振宏 设计周数: 两周

日期:2013 年 11 月 20 日

1

Windows绘图系统的设计与实现

目录

绪论·········································································3 摘要·········································································3 一、课程设计目的与要求·······················································3 二、设计正文·································································4

1、概述··································································4

1.1 课题题目····························································4 1.2 系统主要目标·························································4 1.3 系统的开发坏境及运行环境··············································4 2、系统需求分析··························································4

2.1 绘图板的功能分析·····························································4 2.2 用户界面需求和界面分析·······················································4

3、Windows绘图板软件概要设计···········································6

3.1 设计准备·····································································6 3.2 Windows绘图板软件总体设计思想················································7

3.3总体设计流程图································································8

4、Windows绘图板软件详细设计············································9

4.1各功能实现····································································9 4.2绘制基本图形··································································9 4.3设置工具属性··································································9 4.4编辑颜色······································································10

5、程序测试······························································11

5.1主界面········································································11 5.2文件菜单界面··································································11 5.3 Edit菜单界面··································································13 5.4 Help界面······································································13

三、课程设计总结或结论·······················································14 四、参考文献·································································14

2

Windows绘图系统的设计与实现

绪论

计算机已经成为我们学习和工作的得力助手:今天,计算机的价格已经十分低廉,性能却有了长足的进步。它已经被应用于许多领域,计算机之所以如此流行的原因主要有以下几个方面:

首先,计算机可以代替人工进行许多繁杂的劳动; 其次,计算机可以节省许多资源;

第三,计算机可以大大的提高人们的工作效率; 第四,计算机可以使敏感文档更加安全,等等。

既然计算机有这么多优点。所以我就梦想着能用我的双手和智慧让计算机能听我的使唤,计算机我认为最成熟的程序就是Windows了。所以我就模仿Windows的画图板,自己做了一个画图板。也有一部分成分是为了完成学校的课题任务,但我也是很愉快的作了这个课题。

用java做Windows 的画图板确实有一些难做。因为有很多编程语言都有比java好的多的界面设计功能。如:VB,C#等。他们都是微软公司设计的语言有很好的界面设计功能。并且C# 也有java所拥有的类库功能。我在这并不是说java不好,只是说明java在做界面程序时。并不占优势。特别是做Windows 的软件。

摘要:

Windows画图板系统的开发最主要包括前端应用程序的开发。对前端应用程序的开发要求应用程序功能完备,易使用,界面美观等特点。

Windows画图板系统主要实现文件的新建,保存,颜色的编辑,在坐标系中画直线、矩形、椭圆、圆形、三角等。图形界面各个按钮如“橡皮”、“铅笔”、“刷子”、“A”、“直线”等的实现。该系统还能调整画笔的大小,橡皮的大小,颜色是否填充,编辑各种颜色的实现。

我们采用Java语言设计编程该系统。 关键词:Windows绘图板 Java、

一、 课程设计的目的与要求

目的:采用面向对象编程技术,设计并实现一个功能完善的Windows绘图板程序。通过实际程序的开发,熟练面向对象程序设计方法,掌握桌面程序设计技巧,熟悉.NET或Java开发环境。 任务:

1. 开发一个功能完善的Windows绘图板程序,功能包括:新建空白文档、文件保存、绘制一些基

本的图形组件(直线、矩形、实心矩形、椭圆、实心椭圆、圆、实心圆、圆角矩形、实心圆角矩形等)、橡皮擦、添加文字等; 2. 完成软件开发文档编写;

3

Windows绘图系统的设计与实现

3. 给出程序运行、测试的详细结果。

4. 进一步加强和提高软件工程文档的编写能力; 5. 培养协作能力和团队精神。

二、设计正文

1.概述

1.1课题题目:Windows绘图板的设计与实现 1.2系统的主要目标:

本系统目标是实现Windows绘图板软件功能概述

(1)新建空白文档; (2)文件保存;

(3)绘制一些基本的图形组件(直线、矩形、实心矩形、椭圆、实心椭圆、圆、实心圆、圆

角矩形、实心圆角矩形等)、橡皮擦、添加文字等;

1.3 系统的开发环境及运行环境:

操作系统: Windows XP Pro SP2 建模工具: Rational Rose 2003 数据库系统:SQL Server2005

开发工具: Visual Studio 2005 Eclipse 3.0 Web服务器:IIS+ASP.NET 2.0平台

2.系统需求分析

2.1绘图板的功能分析:

该系统所要实现的功能如下:

(1)“橡皮”的功能:用来画出的图形。 (2)“铅笔”的功能:用来画出的任意直线。

(3)“直线”的功能:用来让用户更好的画出的直线。 (4)“字体”的功能:用来让用户写出自己的字体。 (5)“多边形”的功能:用来让用户更好的画出的多边形。 (6)“椭圆”的功能:用来让用户更好的画出的椭圆。

(7)“圆角矩形”、“矩形”、“选择颜色”等功能:用来让用户更好的实用该绘图板功能。

2.2用户界面需求和性能分析:

Windows绘图板主要是为用户提供基本画图工具。所以以提供用户最需要的功能为目的。 设计性能如下:

让用户不管怎样操作都能得到用户的目的,争取做到傻瓜都能使用该软件。

较windows绘图板增加了生成函数图象的功能,能实现绘制一些基本的图形组件(直线、矩形、实心矩形、椭圆、实心椭圆、圆、实心圆、圆角矩形、实心圆角矩形等)、橡皮擦、添加文字等。

其他的实现了windows绘图板的大部分功能:铅笔、橡皮、刷子、直线、选择颜色等等功能。

4

Windows绘图系统的设计与实现

用例图

用例图说明:

(1)系统的外部角色有:paintings。 (2)系统主要用例的文档描述:

painting可见的功能,包含了pencil、word、circle、fillcircle、painting、rubber、filloval、filloval、fillrect、oval、line、reck。

类图

5

Windows绘图系统的设计与实现

类图说明:

1.工具接口Tool:

从图中可以看到,工具接口Tool 定义了鼠标动作的四个方法,分别是拖动mouseDrapped()、移动mouseMoved()、松开mouseReleased()、按下mousePressed()、点击mouseClicked()五个动作,并用String 类型的常量属性来定义工具的类型。这个接口只有一个实现类AbstractTool,而每个工具类 都是去扩展AbstractTool 类,在图中表现为Tool1、Tool2…….ToolN。 2.Tool的实现类AbstractTool

AbstractTool 是Tool 的实现类,也是一个抽像类,所以并不能被创建,只能被继承。此类实现Tool 中定义的所有方法,并扩展了其它方法,让其子类继承或者重写。该类中为其他的工具类提供了大部分的实现,那么它的子类就可以不必再做重复的实现,只关心与本类相关的逻辑, 3.AbstractTool的子类

AbstractTool 一共有ArrowTool(箭头)、PencilTool(铅笔)、BrushTool(刷子)、EraserTool(橡皮擦)、LineTool (直线)、RectTool (矩形)、PolygonTool (多边形)、RoundTool (椭圆形)、RoundRectTool(圆矩形)、AtomizerTool(喷墨)、ColorPickedTool(颜色选择)11 个子类, 4. 界面类ImageFrame

这个画图工具的界面的主要放在这个类中实现 5. 业务逻辑类ImageService

除鼠标的画图功能外(画图功能由Tool 的实现类完成),初始化画板、图片的新建打开与保存、各种面板的显示与隐藏、颜色的编辑、整个界面的刷新、菜单等业务逻辑都放在这个类中实现, 对象,它并没有保存一些状态属性。 6 .文件选择类ImageFileChooser

ImageFileChooser 类继承了JFleChooser 类,JFleChooser 是Java 提供的一个简单的文件选择机制,我们这里扩展这个类,是为了增加我们自己的文件过滤器。

3.Windows绘图板软件概要设计

3.1 设计准备

(1)此程序为实现这些功能模块,必须首先定义一个工具面板,将这些画笔、画箭头、椭圆、圆、多

边形直线、画矩形、画笔颜色、画笔大小、橡皮等功能组件放入这个工具面板中。

(2)此程序为实现利用鼠标做画笔的功能,必会产生鼠标事件MouseEvent。因此,为实现鼠标画图的

功能,必须用到鼠标触发事件,故在此程序中,必须实现“委托事件模型”,用到事件源、事件对象以及监听者对象。

(3)此程序中,必须用到的包如下:

import java.awt.*;

import java.awt.geom.*; import java.awt.event.*; import javax.swing.*; import java.io.*; import java.util.*; (4)需用到的类  class DrawPad

这个类是主类,是程序得以运行的入口。在这个主类中定义了主方法,是该程序执行的入口。  class SimpleDrawPad

此类用于实现这个程序的大部分功能,在这个类中除了定义一些基本变量以及构造函数外,还定义了很多成员方法,这些成员方法将实现鼠标触发事件的一系列绘图功能。  class ButtonDealer(SimpleDrawPad内部类)

按钮侦听器ButtonDealer类,内部类,用来侦听基本按钮的操作。  class ButtonDealer1(SimpleDrawPad内部类)

6

Windows绘图系统的设计与实现

按钮侦听器ButtonDealer1类,用来侦听颜色选择、画笔粗细设置、文字输入按钮的操作。  class mouseA(SimpleDrawPad内部类)

鼠标事件mouseA类,继承了MouseAdapter,用来完成鼠标相应事件操作。  class mouseB(SimpleDrawPad内部类)

鼠标事件mouseB类继承了MouseMotionAdapter,用来完成鼠标拖动和鼠标移动时的相应操作。  class checkBoxHandler(SimpleDrawPad内部类)

选择字体风格时候用到的事件侦听器类,加入到字体风格的选择框中  class DrawPanel(SimpleDrawPad内部类) 画图面板类,用来画图。  class drawings

定义画图的基本图形单元。  class Line

继承class drawings 实现画直线功能。  class Rect

继承class drawings 实现画矩形功能。  class fillRect

继承class drawings 实现画实心矩形功能。  class Oval

继承class drawings 实现画椭圆功能。  class fillOval

继承class drawings 实现画实心椭圆功能。  class Circle

继承 class drawings 实现画圆功能。  class fillCircle

继承 class drawings 实现画实心圆功能。  class Pencil

继承 class drawings 实现自定义绘画功能。  class Rubber

继承 class drawings 实现清除图案功能。  class word

继承 class drawings 实现输入文字功能。

3.2Windows绘图板软件总体设计思想

主窗体的设计:主类(painter)用来生成主界面,完成画图板的主要框架。主类由JFrame派生出来。主界面由菜单栏、工具栏和画图区域三部分组成,布局格式采用BorderLayout布局形式。

 菜单栏的设计。菜单栏包括文件菜单栏、颜色菜单栏、线条粗细菜单栏和提示菜单栏。其中文件菜单栏

包括文件的新建、打开、保存等选项;颜色菜单栏可以进行颜色选择;线条粗细菜单栏设置线条的粗细;提示菜单栏给出提示信息。

工具栏由新建、打开和保存文件按钮、基本图形的按钮、选择字体风格复选框和字体下拉列表框组成。主类中添加并对菜单栏和工具栏添加事件监听。  事件响应的处理。

对菜单栏、工具栏和用鼠标画图的事件响应进行处理。

菜单栏中文件的新建、打开和保存菜单事件的处理:Java把每个文件都视作顺序字节流。如果要在Java中进行文件处理,则必须用到Java.io包。这个包定义了一些流类,选用FileInputStream(从文件中读入数据)和FIleOutputStream(向文件输出数据),通过建立这些文件的对象便可以打开文件。这些流相应地从InputStream和OutputStream派生,这些文件均使用文件流,所以必须将文件结构化以适应程序的要求。

7

Windows绘图系统的设计与实现

我们需要对保存的对象序列化,然后以输出流的方式保存。在程序中用newFile()、loadFile()和saveFile()三个函数分别实现文件的新建、打开和保存。

 工具栏事件的处理:主要有一些Button组成。我们用ButtonHandler内部类处理基本单元事件,

ButtonHandler1内部类处理新建、打开和保存文件按钮,在画图类DrawPanel中定义CreateNewItem()函数处理工具栏中的画图事件。

 鼠标画图:由于画图板主要是用来画图,所以需要在程序中添加对鼠标按下、拖动、进入、退出、移动

和单机事件进行监听并进行处理。内部类mouseA定义了完成鼠标按下、松开、进入、退出事件响应。内部类mouseB完成鼠标拖动和移动事件响应。

 画图的基本功能。在程序设计中用到了动态绑定,我们可以提取他们的公共属性,先建立一个父类,然

后建立各个子类,继承父类中的方法并将父类中的draw函数重写。一些关于图形形状的类,最主要是用于画图、字体和橡皮擦等基本类型。如Circle、Triangle、Rectangle,它们都是有超类(Object类)派生的。在面向对象编程中,每个类都有画出自己的能力,每个类都有自己的draw函数,但每种形状的draw函数都不一样,但在绘制任何形状时,只需简单调用父类drawing的draw方法,然后让程序动态地根据对象的类型决定使用哪个子类的draw方法。为了使画出的图形更加美观,我们在draw函数中使用了Graphics2D的对象的引用。这样可以在不改变原程序的情况下,添加扩展的图形,是程序变得更加强大。同时,为了文件的保存,父类实现Serialize接口,将对象线性化。

3.3总体设计流程图

8

Windows绘图系统的设计与实现

4、Windows绘图板软件详细设计

4.1 各功能实现

(1)一组基本图形按钮,包括:Pencil(随笔画)、Line(直线)、Rect(矩形)、FRect(实心矩形)、Ov(椭圆)、FOval(实心椭圆)、Circle(圆)、FCircle(实心圆)、RoundRect(圆角矩形)、FrRect(实心圆角矩形)、Rubber(橡皮擦)、Word(文字)。

这些基本图形都继承于同一个父类:drawings。drawings 具有变量(属性): int x1,x2,y1,y2; //用来存放相应图形元素的坐标 int R,G,B; //用来存放图形色彩颜色信息 float stroke; //用来存放画笔粗细 int type; //用来保存图形类型

String s1; //用来保存输入文字字符串 String s2; //用来保存字体类型字符串 void draw ( Graphics2D g2d ) {} ;

draw()方法中用到了Java绘图里面的Graphics2D类,所有继承drawings类的图形子类都重写了此方法。这就是Java程序中类的继承的概念。它对于程序代码的重用是很重要的,将极大的方便和简略程序代码。 (2)程序中还包括一下三个基本操作按钮: a)新建(New):新建一个图形文件。 b)打开(Open):打开一个图形文件。 c)保存(Save):保存当前图形文件。

(3)选择颜色和设置当前画笔粗细的按钮分别为:颜色(Color)、线条粗细(Stroke)。 (4)选择当前字体风格的选择框为:粗体(BOLD)、斜体(ITALIC),用以设置当前字体的风格。 (5)选择当前字体的下拉式复选框为:Styles。

4.2绘制基本图形

基本图形包括以下几种: Pencil:随笔画,图标为:Rect:矩形,图标为:

。 Line:直线,图标为:。 Font:文本,图标为:

。 Circle:圆,图标为:

。 。 。

RectSelect:椭圆选择工具,图标为:RoundRect:圆角矩形,图标为:

。 Eraser:橡皮擦,图标为:

绘图时,单击工具栏上相应图形的图标,然后用鼠标拖动,在绘图区域内进行绘图即可。

4.3设置工具属性

鼠标单击工具栏相应图形的图标时,在菜单栏就会出现各工具相应的属性,例如当选中椭圆工具时,就会出现有关椭圆的属性如下图:

9

Windows绘图系统的设计与实现

4.4编辑颜色

点击Line Color(File Color),然后在即可设置线条颜色和格式。

或者点击 字体 选择所要的颜色和格式,

双击某种颜色后出现界面:

10

Windows绘图系统的设计与实现

5、程序测试

5.1主界面

5.2文件菜单界面

如上图所示,该程序为用户提供文件菜单界面,用户可以对程序的各种功能进行选择,方便用户使用。例如选择Open File键进行操作:

11

Windows绘图系统的设计与实现

12

Windows绘图系统的设计与实现

5.3Edit界面

5.4Help界面

如上图所示,该功能实现软件的说明。

13

Windows绘图系统的设计与实现

三、课程设计总结或结论

为了提高我们的实践能力,让我们学以致用,能灵活运用所学的知识进行再创造,学校特安排我们进行为期二周的java课程设计实习,并安排了指导老师帮助辅导,让我们在规范化、严谨化、实用化上面有了很大进展。

在此次Windows绘图板程序开发过程中,有很多东西值得我们思考并总结。 开发过程大体可分为以下几个步骤:

(1)思考总体设计方案:总体结构和模块外部设计,功能分配。思考要实现整个程序大体需要的几

个模块和其中用到的java语言基本操作符、语句等。

(2)画出总体设计方案流程图:用流程图的形式展现你的基本编程思想。

(3)流程图具体化:即将流程图中的几大模块的具体实现思考清楚,可以用流程图的形式展现.并

想好实现的关键代码。

(4)编辑程序代码:这是一个至关重要复杂而且需要反复修改的环节,在此环节中你将发现总体设

计和模块思想会存在很多问题,需不断改进.如何实现各函数功能,达到预期效果也将是一项繁复的工作。

(5)代码的调试:在eclipse环境下输入代码并进行调试和正确运行。在调试过程中会遇到很多需要

精化的地方,需要十足的耐心与细心,不断改进完善程序。

(6)最后修饰:程序可以正确运行之后,再不影响程序功能的情况下,运用各种辅助性符号,使界

面更加美观漂亮,操作更人性化.增强程序的新意与可行性。

通过这次课程设计,使我们更加熟悉的掌握了java语言的运用。帮助我们熟悉了更多java语言的功能,提高了我们的动手能力,学到了许多解决实际问题的宝贵经验.同时也挖掘出了我们潜在的能力,使我们对自己更有自信,对编程也更有兴趣。我相信,只要努力、勤奋、坚持不懈,就没有什么做不到的事,不能还没开始就退缩,要勇于拼搏,敢于创新。

四、参考文献

[1] 清华大学出版社的《java2实用教程》(第三版),张跃平、耿祥义著。 [2] 清华大学出版社的《java程序设计》,陈勇孝著。 [3] 清华大学出版社的《Java就业培训教程》,张孝祥著。 [4] CSDN 论坛 网址 http://www.csdn.net/。

14

因篇幅问题不能全部显示,请点此查看更多更全内容