Java绘图.doc

上传人:wj 文档编号:1218101 上传时间:2023-04-30 格式:DOC 页数:23 大小:153.50KB
下载 相关 举报
Java绘图.doc_第1页
第1页 / 共23页
Java绘图.doc_第2页
第2页 / 共23页
Java绘图.doc_第3页
第3页 / 共23页
Java绘图.doc_第4页
第4页 / 共23页
Java绘图.doc_第5页
第5页 / 共23页
Java绘图.doc_第6页
第6页 / 共23页
Java绘图.doc_第7页
第7页 / 共23页
Java绘图.doc_第8页
第8页 / 共23页
Java绘图.doc_第9页
第9页 / 共23页
Java绘图.doc_第10页
第10页 / 共23页
Java绘图.doc_第11页
第11页 / 共23页
Java绘图.doc_第12页
第12页 / 共23页
Java绘图.doc_第13页
第13页 / 共23页
Java绘图.doc_第14页
第14页 / 共23页
Java绘图.doc_第15页
第15页 / 共23页
Java绘图.doc_第16页
第16页 / 共23页
Java绘图.doc_第17页
第17页 / 共23页
Java绘图.doc_第18页
第18页 / 共23页
Java绘图.doc_第19页
第19页 / 共23页
Java绘图.doc_第20页
第20页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

Java绘图.doc

《Java绘图.doc》由会员分享,可在线阅读,更多相关《Java绘图.doc(23页珍藏版)》请在冰点文库上搜索。

Java绘图.doc

2

武汉科技大学图形学课程设计

二0一五~二0一六学年第一学期

计算机科学与技术学院

课程设计报告书

题目:

Java绘图板开发

课程名称:

图形学技术

班级:

计算机1302

学号:

2013125*****

姓名:

胡文康

指导教师:

李红斌

二0一五年十一月二十五日

计算机科学与技术学院课程设计成绩单

课程名称:

图形学基础指导老师:

李红斌

姓名

胡文康

性别

学号

2013125*****

班级

计算计1302班

综合

成绩

成绩

等级

设计整体表现力

(占总成绩20%)

能正确表现(20分)

基本能正确表现(15分)

能表现但不完善(10分)

设计功能完善程度

(占总成绩10%)

完善(10分)

基本完善(8分)

不完善(5分)

设计结构的合理性

(占总成绩的10%)

合理(10分)

基本合理(8分)

不太合理(5分)

对问题的答辩情况

(占总成绩的40%)

概念正确有创新(40分)

能正确回答所有问题(35分)

基本能正确回答(30分)

部分问题回答概念不清晰(20分)

学生的工作态度与独立工作能力

(占总成绩的10%)

工作态度认真能独立完成任务(10分)

工作态度认真但独立性太差(8分)

工作态度基本认真但缺乏独立性(5分)

设计报告的规范性

(占总成绩的10%)

符合规范(10分)

基本符合规范(8分)

规范性较差(5分)

第20页共23页

20

武汉科技大学图形学课程设计

摘要

随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。

JAVA是一门很优秀的编程语言,具有面向对象、与平台无关、安全、稳定和多线程等特点,是目前软件设计中极为健壮的编程语言。

JAVA不仅可以用来开发大型的应用程序。

而且特别适合Internet的应用开发。

JAVA确实具备“一次写成,处处运行”的特点,JAVA以成为网络时代最重要的编程语言之一。

本报告中介绍了用JAVA语言实现画笔系统的全部过程。

本次课程设计是配合JAVA程序设计课程,帮助我们深入学习掌握JAVA语言,熟练运用这个工具来编写的。

通过课程设计各个项目的综合训练,培养学生实际分析问题、编程和动手能力、提高学生的综合素质。

本课程设计尝试使用一些较生动的示例和设计项目,激发学生学习兴趣,引导学生主动学习,正确理解、接受需要重点掌握的知识点,为参加项目开发及更深入学习做好准备。

本次课程设计主要是用JAVA实现画笔系统,其系统主要完成以下功能:

设计一个画图程序,能够实现画笔、画直线、画圆形、画矩形的功能,并且在绘图。

过程中能够修改该画笔的大小以及颜色。

该画图程序还需具有橡皮擦功能以及清空整个画面的功能

关键词:

画笔系统,JAVA

目录

摘要 2

目录 3

1.绪论 4

2.开发环境介绍 5

3.需求分析 6

3.1总体目标 6

3.2要实现的功能 6

4.概要设计 7

4.1设计准备 7

4.2需用到的类 7

5.详细设计 8

5.1类的设计 8

5.2类的方法介绍 8

6.测试数据及运行结果 10

7.源程序 10

8.总结 23

9.参考文献 23

一.绪论

Java不依赖平台的特点使它受到广泛的关注,Java已成为网络时代最重要的语言之一。

目前,Java语言不仅是一门被广泛使用的编程语言,而且已成为软件设计开发者应当掌握的一门基础语言。

因为很多新的技术领域都涉及到Java语言,国内外许多大学已将Java语言列入本科教学计划,而IT行业对Java人才的需求也在不断的增长,因此,掌握Java已经成为共识。

Java是一门说简单也不简单,说难也不难的课程。

所以,我们在学习的过程中要根据自己的具体情况,合理安排编程训练时间,相信编程能力会在不知不觉中得到提高。

在此次的课程设计实践中,我学到了教科书上没有的东西。

这次课程设计,我按照课程设计的要求,分块实现程序的功能。

在实践中我遇到许多的问题,但我都克服,最终我成功的完成了这次课程设计。

从中我充分理解了Java面对对象的特性,并体会到Java与C#语言的不同之处。

在实践的同时,我又从中成长了许多,特别是在对程序的编译和调试中掌握了许多的技巧和方法,为今后的其他计算机语言的学习奠定了一定的基础。

二.开发环境介绍

该项目所使用的软件开发环境如下:

操作系统:

Windows10开发工具;

Eclipse4.5及其VE插件Eclipse;

简介:

Eclipse是一个开放源代码的、基于Java的可扩展开发平台。

就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。

幸运的是,Eclipse附带了一个标准的插件集,包括Java开发工具。

Eclipse是著名的跨平台的自由集成开发环境(IDE)。

最初主要用来Java语言开发,但是目前亦有人通过插件使其作为其他计算机语言比如C++和Python的开发工具。

Eclipse的本身只是一个框架平台,但是众多插件的支持使得Eclipse拥有其他功能相对固定的IDE软件很难具有的灵活性。

许多软件开发商以Eclipse为框架开发自己的IDE。

  Eclipse最初由OTI和IBM两家公司的IDE产品开发组创建,起始于1999年4月。

IBM提供了最初的Eclipse代码基础,包括Platform、JDT和PDE。

目前由IBM牵头,围绕着Eclipse项目已经发展成为了一个庞大的Eclipse联盟,有150多家软件公司参与到Eclipse项目中,其中包括Borland、RationalSoftware、RedHat及Sybase等。

它是一个开发源码项目,它其实是VisualAgeforJava的替代品,界面跟先前的VisualAgeforJava差不多,但由于其开放源码,任何人都可以免费得到,并可以在此基础上开发各自的插件,因此越来越受人们关注。

近期还有包括Oracle在内的许多大公司也纷纷加入了该项目,并宣称Eclipse将来能成为可进行任何语言开发的IDE集大成者,使用者只需下载各种语言的插件即可。

三.需求分析

3.1总体目标

设计一个画图程序,能够实现画笔、画直线、画圆形、画矩形的功能,并且在绘图。

过程中能够修改该画笔的大小以及颜色。

该画图程序还需具有橡皮擦功能以及清空整个画面的功能

3.2要实现的功能

1、这个画图程序,最基本的功能是,作为一个画笔,能利用它实现在屏幕上任意绘画、书写的功能;

2、利用这个画图程序,通过选择画直线、画圆形、画矩形等功能选项并且在屏幕上拖动鼠标操作能实现画出相应图形的功能;

3、这个画图程序,还需具备橡皮擦的功能,利用这个橡皮擦能够擦除屏幕上的图案,并且此橡皮擦也应该能够改变大小;

4、这个画图程序,还应该做到能够改变画笔颜色的功能;

5、这个画图程序,还应该具备能够清除整个屏幕已绘制图画的功能。

四.概要设计

4.1设计准备

1、此程序为实现这些功能模块,必须首先定义一个工具面板,将这些画笔、画直线、画圆形、画矩形、画笔颜色、画笔大小、橡皮等功能组件放入这个工具面板中。

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

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

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

packageorg.hwk.pd.app;

importjava.applet.*;

importjava.awt.*;

importjava.awt.event.*;

importjava.util.*;

importjavax.swing.*;

importjava.awt.geom.*;

importjava.io.*;

4.2需用到的类

1)classPoint

此类用于定义一组数据成员,并且使用构造函数将他们分别初使化,以方便在下面的程序中使用他们。

2)classpaintboard

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

3)publicclassMainApp

这个类是主类,是程序得以运行的入口。

在这个主类中定义了主方法,是该程序执行的入口。

五.详细设计

5.1类的设计

1)classPoint

在这个类中定义了用于截断的一系列标志变量,有初始坐标、颜色、工具选择等,并且在这个类中还定义了构造函数Point(intx,inty,Colorcol,inttool,intboarder),用于完成对这些变量的初始化工作。

2)classpaintboard

这个类用来实现整个程序的大部分功能,并且在这个类中定义了大部分的成员函数和成员方法,在这个类中用到的主要成员方法如下:

Publicvoidpaint(Graphicsg)

publicvoiditemStateChanged(ItemEvente)

publicvoidmouseDragged(MouseEvente)

publicvoidmousePressed(MouseEvente)

publicvoidmouseReleased(MouseEvente)

publicvoidmouseEntered(MouseEvente){}

publicvoidmouseExited(MouseEvente){}

publicvoidmouseClicked(MouseEvente){}

publicvoidmouseMoved(MouseEvente){}

publicvoidactionPerformed(ActionEvente)

5.2类的方法介绍

①定义的变量:

在这个类中,首先定义了画笔的大小、画笔的颜色、画笔的粗细、橡皮的大小、工具的选择等一些变量,并且还用到了系统中自带的一些类初使化了一些面板工具对象,用于完成对面板工具、画直线、画椭圆、画矩形、橡皮擦、清除等一些工具按钮的定义。

②初使化构造函数:

在这个初使化构造函数中,首先继承了父类Frame,然后初使化了各工具按钮以及各个选择项,包括颜色选择、画笔大小选择、橡皮大小选择,并且将这些组件添加到了工具面板中,最后还对各个组件注册了事件监听者对象。

③paint()方法:

这个方法主要用于在Applet的界面中显示文字、图形和其它界面元素。

本程序中,在这个方法中,定义了一些工具选项设置,给用户选择画笔、画直线、画圆、橡皮擦等一些功能。

④itemStateChanged()方法:

这个方法用来实现的功能很简单,主要是用来改变画笔大小、画笔颜色、橡皮大小的。

在此方法中,设置了大小以及颜色的一些预选项,以供用户对大小以及颜色做出选择。

⑤mouseDragged()方法:

此方法是处理MouseEvent事件以实现MouseMotionListener接口的对象。

MouseMotionListener是事件监听者,mouseDragged(MouseEvente)是成员方法,代表鼠标拖动事件,在这个方法中,还用到了MouseEvent类常用成员方法:

publicintgetX()以及publicintgetY(),用来返回发生鼠标事件的X及Y的坐标。

这个方法中,主要用来控件画笔和橡皮的转换。

⑥mousePressed()方法:

此方法是处理MouseEvent事件以实现MouseListener接口的对象。

MouseListener是事件监听者,mouseDPressed(MouseEvente)是成员方法,代表鼠标按下事件。

这个方法主要用来控件用户画直线、画圆、画矩形这些功能之间的转换。

⑦mouseReleased()方法:

mouseEntered()方法:

mouseExited()方法:

mouseClicked()方法:

这些方法和mousePressed()方法属于同一类,他主要用来表示鼠标释放事件,是对上述各个功能完成后对鼠标事件的又一次触发。

六.测试数据及运行结果

1、画笔在屏幕上绘画

2、改变画笔的粗细

3、画直线、画圆、画矩形

七.源程序

/*PaintBrush.java,可调画笔粗细-Java画图实验-swingcode-gcode

*画直线,曲线,矩形,椭圆,可调颜色,有橡皮擦功能

*可调画笔粗细

*hwk*/

packageorg.hwk.pd.app;

importjava.applet.*;

importjava.awt.*;

importjava.awt.event.*;

importjava.util.*;

importjavax.swing.*;

importjava.awt.geom.*;

importjava.io.*;

//定义一组数据成员

classPointimplementsSerializable{

intx,y;

Colorcol;

inttool;

intboarder;

Point(intx,inty,Colorcol,inttool,intboarder){

this.x=x;

this.y=y;

this.col=col;

this.tool=tool;

this.boarder=boarder;

}

}

//实现鼠标触发事件的一系列绘图功能

classpaintboardextendsFrameimplementsActionListener,MouseMotionListener,

MouseListener,ItemListener{

privatestaticfinallongserialVersionUID=1L;

intx=-1,y=-1;

intcon=1;//画笔大小

intEcon=5;//橡皮大小

inttoolFlag=0;//toolFlag:

工具标记

//toolFlag工具对应表:

//(0--画笔);(1--橡皮);(2--清除);

//(3--直线);(4--圆);(5--矩形);

Colorc=newColor(0,0,0);//画笔颜色

BasicStrokesize=newBasicStroke(con,BasicStroke.CAP_BUTT,

BasicStroke.JOIN_BEVEL);//画笔粗细

Pointcutflag=newPoint(-1,-1,c,6,con);//截断标志

VectorpaintInfo=null;//点信息向量组

intn=1;

FileInputStreampicIn=null;

FileOutputStreampicOut=null;

ObjectInputStreamVIn=null;

ObjectOutputStreamVOut=null;

//*工具面板--画笔,直线,圆,矩形,多边形,橡皮,清除*/

PaneltoolPanel;

Buttoneraser,drLine,drCircle,drRect;

Buttonclear,pen;

ChoiceColChoice,SizeChoice,EraserChoice;

Buttoncolchooser;

Label颜色,大小B,大小E;

//保存功能

ButtonopenPic,savePic;

FileDialogopenPicture,savePicture;

paintboard(Strings){

super(s);

addMouseMotionListener(this);

addMouseListener(this);

paintInfo=newVector();

/*各工具按钮及选择项*/

//颜色选择

ColChoice=newChoice();

ColChoice.add("黑色");

ColChoice.add("红色");

ColChoice.add("蓝色");

ColChoice.add("绿色");

ColChoice.addItemListener(this);

//画笔大小选择

SizeChoice=newChoice();

SizeChoice.add("1");

SizeChoice.add("3");

SizeChoice.add("5");

SizeChoice.add("7");

SizeChoice.add("9");

SizeChoice.addItemListener(this);

//橡皮大小选择

EraserChoice=newChoice();

EraserChoice.add("5");

EraserChoice.add("9");

EraserChoice.add("13");

EraserChoice.add("17");

EraserChoice.addItemListener(this);

toolPanel=newPanel();//创建显示面板对象

clear=newButton("清除");

eraser=newButton("橡皮");

pen=newButton("画笔");

drLine=newButton("画直线");

drCircle=newButton("画圆形");

drRect=newButton("画矩形");

openPic=newButton("打开图画");

savePic=newButton("保存图画");

colchooser=newButton("显示调色板");

//各组件事件监听

clear.addActionListener(this);

eraser.addActionListener(this);

pen.addActionListener(this);

drLine.addActionListener(this);

drCircle.addActionListener(this);

drRect.addActionListener(this);

openPic.addActionListener(this);

savePic.addActionListener(this);

colchooser.addActionListener(this);

颜色=newLabel("画笔颜色",Label.CENTER);

大小B=newLabel("画笔大小",Label.CENTER);

大小E=newLabel("橡皮大小",Label.CENTER);

//面板添加组件

toolPanel.add(openPic);//打开图画

toolPanel.add(savePic);//保存图画

toolPanel.add(pen);//画笔

toolPanel.add(drLine);//画线

toolPanel.add(drCircle);//画圆

toolPanel.add(drRect);//画矩形

toolPanel.add(颜色);

toolPanel.add(ColChoice);//画笔颜色

toolPanel.add(大小B);

toolPanel.add(SizeChoice);//画笔大小

toolPanel.add(colchooser);//调色板

toolPanel.add(eraser);//橡皮

toolPanel.add(大小E);

toolPanel.add(EraserChoice);//橡皮大小

toolPanel.add(clear);//清除

toolPanel.setBackground(Color.PINK);//面板背景色

//工具面板到APPLET面板

add(toolPanel,BorderLayout.NORTH);

setBounds(60,60,900,600);

setVisible(true);

validate();

//dialogforsaveandload

openPicture=newFileDialog(this,"打开图画",FileDialog.LOAD);

openPicture.setVisible(false);

savePicture=newFileDialog(this,"保存图画",FileDialog.SAVE);

savePicture.setVisible(false);

openPicture.addWindowListener(newWindowAdapter(){

publicvoidwindowClosing(WindowEvente){

openPicture.setVisible(false);

}

});

savePicture.addWindowListener(newWindowAdapter(){

publicvoidwindowClosing(WindowEvente){

savePicture.setVisible(false);

}

});

addWindowListener(newWindowAdapter(){

publicvoid

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2