画图板--Java课程设计
- 格式:doc
- 大小:563.50 KB
- 文档页数:41
《 面向对象程序设计》
课程设计报告
题 目: 画图板设计与实现
院 (系): 信息科学与工程学院
专业班级: 计算机科学与技术1201班
学生姓名: **
学 号: ***********
指导教师: **
20 14 年 12 月 29 日至20 15 年 1 月 9 日
华中科技大学武昌分校制
面向对象程序设计 课程设计任务书
一、设计(调查报告/论文)题目
画图板设计与实现
二、设计(调查报告/论文)主要内容
内容:
完成一个类似于windows画图板的绘画程序。软件主要有菜单栏,工具栏,画图区组成,菜单栏具有新建,打开,保存等常见的功能;工具栏可以选择用户需要的图形样式,设置参数,插入文本等操作。
基本功能与要求:
1 新建一个空的图形文件:用于绘制新的图形。
2 打开或保存一个图形文件,便于对图形文件的管理。
3 绘制一些基本的画图组件:直线,矩形,实心矩形,椭圆,实心椭圆,圆,实心圆,圆角矩形,实心圆角矩形等。
4 可以用鼠标在绘制画板上单击拖动进行随笔画。
5 橡皮擦:可以将已绘制好的图形擦掉。
三、原始资料
1.《面向对象程序设计课程设计》指导书
2. 耿祥义.JAVA大学实用教程.北京:清华大学出版社,2009.
四、要求的设计(调查/论文)成果
1.课程设计报告
2.课程设计软件
五、进程安排
布置任务,查找资料、需求分析1天
总体设计1天
详细设计1.5天
编制源程序实现3.5天
测试与修改1天
撰写课设报告2天
六、主要参考资料
[1] 张广彬. Java课程设计案例精编(第二版).北京:清华大学出版社, 2011.
[2] 耿祥义. Java课程设计(第二版).北京:清华大学出版社, 2008.
[3] 耿祥义.JAVA大学实用教程.北京:清华大学出版社,2009.
[4] 邹林达.陈国君 Java2程序设计基础.北京:清华大学出版社,2010.
[5] 邹林达.Java2程序设计基础实验指导.北京:清华大学,2010.
指导教师(签名):
20 年 月 日
目 录
1需求与总体设计……………………………………………………………………………1
1.1需求分析………………………………………………………………………1
1.2总体设计………………………………………………………………………1
2详细设计…………………………………………………………………………………3
2.1详细设计思路………………………………………………………………………3
2.2详细主代码………………………………………………………………………4
3编码实现…………………………………………………………………………………7
4系统运行与测试………………………………………………………………………………33
总结…………………………………………………………………………………37
1 1需求与总体设计
1.1需求分析
平时生活中,我们会需要处理一些基本的图像,也有可能需要花一些简单的图像,平时所使用的图形处理工具有PhotoShop、Windows 画图工具等,其中PhotoShop 是一款非常强大的图形处理工具,windows 画图工具则是一款较为简单的画图工具,功能较为简单,用Windows画图工具,是一种比较简单与具有代表性的画图工具,虽然功能不够强大,但具有大多图片处理程序所必需的基本功能:铅笔画图、各种数学函数图形、填色、取色、橡皮擦等等。这次试验中我做的就是一个仿照windows画板的程序。
考虑到画图板的实际需要,画图板要实现打开,保存图片,用于打开本地图片或保存当前图片至本地;选择需要绘制的图形,用于选择需要绘制的图形样式,如直线,矩形,椭圆等;设置背景色,画笔色以及画笔大小,用于设置画板背景颜色,画笔颜色和当前画笔粗细;擦除错误操作;显示帮助信息等。
1.2总体设计
主界面画图浏览图片矩形橡皮擦保存颜色选择器椭圆直线远角矩形画笔打开弹出选择图片对话框弹出调色板单击右击弹出保存对话框
总体功能图
2
总体设计类图
3 2详细设计
2.1详细设计思路
系统结构设计:
①菜单栏的设计及功能实现:菜单栏主要包括文件、编辑、设置、帮助等常见菜单。其中文件菜单有新建、打开、保存、另存为、退出等功能;编辑菜单有撤销、恢复等功能;设置菜单含有对画笔颜色、画笔大小等的设置功能;帮助菜单提供画图板的帮助信息。
②画图区的设计:对图片的编辑处理区。
③工具栏的设计:根据实际需要选择不同的工具完成画图操作。
④其他功能设计。
开始结束选择操作选择颜色新建文件打开文件选择字体选择形状退出保存弹出取名对话框继续画画
总体流程图
4 2.2详细类设计
MiniDrawPad :主类,扩展了JFrame类,用来生成主界面。
Drawings类:是画图类,基本图形的单元。其各个子类用以实现画各种图形包括以下几个子类:
1.Line类:绘制直线;
2.Rect类:绘制矩形;
3.fillOval类:绘制实心椭圆;
4.fillRect类:绘制实心矩形;
5.Oval类:绘制椭圆;
6.Cicle类:绘制圆;
7.fillCicle类:绘制实心圆;
8.RoundRect类:绘制圆角矩形;
9.fillRoundRect类:绘制实心圆角矩形;
10.Pecil类:自由笔;
5
ButtonHandler类:按钮侦听器ButtonHanler类,内部类,用来侦听基本按钮的操作
ButtonHandler1类:用来侦听颜色选择、画笔粗细设置、文字输入按钮的操作
6
checkBoxHandler类:选择字体风格时候用到的事件侦听器类,加入到字体风格的选择框中
DrawPanel类:画图面板类,用来画图
mouseA类:鼠标事件mouseA类,继承了MouseAdapter,用来完成鼠标相应事件操作
mouseB类: 鼠标事件mouseB类继承了MouseMotionAdapter,用来完成鼠标拖动和鼠标移动时的相应操作
7 3编码实现
源代码
import java.awt.*;
import java.awt.geom.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import java.util.*;
public class MiniDrawPad extends JFrame{
private ObjectInputStream input;
private ObjectOutputStream output;
//定义输入输出流,用来调用和保存图像文件
private JButton choices[];
//按钮数组,存放以下名称的功能按钮
private String names[]={
"New",
//新建
"Open",
//打开
"Save",
//"保存"
/*接下来是我们的画图板上面有的基本的几个绘图单元按钮*/
"Pencil",
//铅笔画,也就是用鼠标拖动着随意绘图
"Line",
//绘制直线
"Rect",
//绘制空心矩形
"fRect",
//绘制以指定颜色填充的实心矩形
"Oval",
//绘制空心椭圆
"fOval",
//绘制以指定颜色填充的实心椭圆
"Circle",