资源描述:
《画板课程设计报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、湖南科技学院课程设计报告课程名称:面向对象程序设计课程设计课程设计题目:画板系:数学与计算科学系专业:信息与计算科学年级、班:2009级2班姓名:唐益明学号:200905002213指导教师:牛志毅职称:讲师2012年6月1.课题的任务和要求设计一个画图软件①用户界面友好;②能绘制基本形状的图形;③可设置图形的颜色、线条的粗细和填充等属性;④可将画好的图保存至文件,并能从文件中读取。2.程序设计思路2.1界面设计2.2具体设计思路选择设计一个画图软件,首先要求能绘制基本形状的图形;同时可以设置图形的颜色、线条的粗细和是否填充等属
2、性;并且可以将画好的图形保存至文件,并能从文件中读取某种格式的图像文件并显示出来。首先,作为画图板,应该能够绘制基本的图形,像"铅笔","直线","矩形","椭圆",”圆”,“橡皮擦”,设置线条粗细,颜色,背景颜色的功能。对要实现的功能类型抽象出一个公共的基类Drawing,子类Pencil,Line,Rectange,Oval,Circle,Rubber,通过继承Drawing基类来实现不同的功能。其次当用户通过选择不同的按钮来绘制图形,这主要是利用按钮监听将不同的绘图功能绑定到不同的按钮上,通过监听用户的选择来创建不同的子类
3、,通过子类绘制不同的图形。其次,关于画图板,应该能够提供一些其他的扩展功能,在这里我提供了绘制圆角矩阵,三角形,3D立方体,圆锥和加入文字,等扩展功能,绘制圆角矩阵是通过Graphics2D的drawRoundRect来实现的,而3D立方体则是通过fill3DRect实现的,而三角形是通19过绘制首尾相连的三条直线来实现的等等。再次,要求能够保存图形与打开已有的图形,这是通过使用FileOutputStream来保存绘制的图形,打开文件时,FileInputStream。为方便用户,提供了一个File的菜单,菜单中提供了新建,保
4、存,打开,退出的功能。最后,当用户通过选择不同的按钮来绘制图形,这是利用按钮监听将不同的绘图功能绑定到不同的按钮上,通过监听用户的选择来创建不同的子类,通过子类绘制不同的图形。3.源代码及注释packagemyclass;importjava.awt.*;importjava.awt.event.*;importjava.io.*;importjava.util.ArrayList;importjavax.swing.*;importjavax.swing.event.*;publicclassDrawingBoard{publ
5、icstaticvoidmain(String[]args){DrawGraphicnewPad=newDrawGraphic();//创建窗口对象}}classDrawGraphicextendsJFrame{privateJButtonchoices[];//按钮数组Stringnames[]={"铅笔","直线","矩形","椭圆","圆","圆角矩形","3D矩形","三角形","圆锥","橡皮擦","文字","颜色"};//按钮上的文本privateStringtipText[]={"自由绘制","绘制直线","绘制矩
6、形","绘制椭圆","绘制圆","绘制圆角矩形","绘制3D矩形","绘制三角形","绘制圆锥","橡皮擦工具","写字","选择颜色"};//按钮的提示字串JToolBarbuttonBar;//工具条intfont1,font2;privateJCheckBoxbold,italic;//粗体,斜体privateJComboBoxfontstyles;//字体名字privateJLabelstatusBar;//状态栏privateDrawPaneldrawingArea;//画图区域privateintwidth=800,
7、height=600;//画图区域初始大小1Drawing[]itemList=newDrawing[1000];//创建数组存储所画的各种图形intindex=0;intnumber=0;privateintcurrentType=1;privateColorcurrentColor=Color.blue;//设置画笔颜色privatefloatcurrentStroke=1.0f;//设置笔画大小19Stringstytle;//存放当前字体//privatefloatcurrentStroke1=5.0f;//设置橡皮擦大
8、小privatebooleancurrentFill=false;//是否填充privateObjectInputStreaminput;privateObjectOutputStreamoutput;JCheckBoxfillCheckBox;JSliders