课程设计-JAVA-画板-模拟画图工具

课程设计-JAVA-画板-模拟画图工具
课程设计-JAVA-画板-模拟画图工具

目录

1 课题介绍 (1)

1.1 课程设计目的 (1)

1.2 课程设计要求 (1)

1.3 课程设计主要知识点 (1)

2 总体设计 (2)

2.1 画板界面设计图 (2)

2.2 模块概述 (2)

2.2.1 文件操作 (2)

2.2.2 图形绘制 (2)

3 详细设计与实现 (4)

3.1 框架类DrawGraphic (4)

3.1.1菜单 (4)

3.1.2工具栏 (6)

3.1.3画图区域 (7)

3.2 基本图形类 (10)

3.2.1 父类Drawings (10)

3.2.2 子类(只列出部分) (10)

4 设计中的难点 (12)

4.1多态与动态绑定 (12)

4.2重绘的理解 (12)

4.3文件的新建、打开和保存 (12)

5 运行测试 (13)

6 总结 (15)

参考文献 (16)

模拟画图 1

1 课题介绍

1.1 课程设计目的

课程设计题目:模拟画图

要求设计一个程序,模拟Windows中的画图程序,实现图形图像的编辑,修改,保存等功能。

1.2 课程设计要求

(1)程序中必须包括“新建”、“打开”、“保存”,用户可以选择,实现对文件的操作;

(2)画图板的绘图按钮用来画出不同的图形,包括实心图形和空心的图形;

(3)可以对线条的颜色和粗细进行设置,也可以对填充图形的颜色进行设置和更改。

1.3 课程设计主要知识点

(1)框架类DrawGraphic继承了Swing类库中JFrame,并且用到JButton,JLabel,JPanel,等Swing类库中的组件进行窗体设计;

(2)选择一个文件,用到组件JFileChooser;

(3)选择颜色,用到组件JColorChooser;

(4)弹出标准对话框,用到组件JOptionPane;

(5)在单击绘图按钮时,所触发的动作通过方法addActionListener和ActionListener接口的actionPerformed方法共同实现;

(6)MouseAdapter和MouseMotionAdapter用来完成鼠标各种事件的相应操作,包括单击、移动、拖拽等;

(7)在界面设计的时候结合BorderLayout和GridLayout两种布局格式;

(8)在添加监听器的时候有用到内部匿名类和内部类,所以要熟悉它们的构造方法和使用方法,从中体会持有对方引用的这一设计思想。

(9)在图形绘制的时候,用到Graphics类,其揭示了所有图形系统几乎都采用的一种机制,就是如何在窗口上画出一些图形来,当窗口构造出来的时候里面有一支画笔,即Graphics的一个对象,当窗口调用paint方法的时候,系统会把画笔自动传递给它,拿到画笔,重写paint方法就实现了在窗口上绘制基本图形。

2 总体设计

2.1 画板界面设计图

定义框架类DrawGraphic ,然后在框架上直接添加菜单栏,整个框架采用 BorderLayout 的布局格式。工具栏、显示鼠标位置的标签、主要的画图区域分别在框架的west ,south ,center 三块区域。而浮动式工具栏采用的是GridLayout 布局格式,其初始方向设定为VERTICAL ,如下图所示: 菜单栏文件帮助

工具栏打开保存新建用户向导关于

画图区域鼠标位置显示标签

铅笔

直线

椭圆

矩形

颜色

粗细

橡皮擦

文字圆

2.2 模块概述

2.2.1 文件操作

文件的新建,打开,保存可以添加内部匿名类的方式实现,new 一个事件监听器ActionListener ,里面调用actionPerformed 的方法,被监听的按钮一旦被触发就调用函数执行相应的操作。

2.2.2 图形绘制

在工具栏里面实现了基本图形的绘制,图形属性的设置,如画笔粗细和画笔颜色的设置,以及橡皮擦,文字输入等功能,而这些功能的实现都是通过添加内

部事件监听器类来实现的。一个类用来监听绘制基本图形以及橡皮擦按钮;另一个类用来监听的是选择颜色按钮、选择画笔粗细按钮、和输入文字按钮,里面都用if语句和e.getSource来判断事件源,从而在触发时,调用不同的函数,当事件源为输入文字时,用JOptionPane.showMessageDialog来弹出一个提示操作的对话框。

画图区域的功能主要是通过添加鼠标监听器来实现的:

一个鼠标监听器监听的是:单击鼠标,释放鼠标,鼠标进入绘图区域,鼠标离开绘图区域这四个鼠标的动作事件;

另一个监听的是:鼠标拖拽和鼠标移动。而且,两个监听器之间是存在着密不可分的关系的,它们同时监听画图区域。

铅笔作画和橡皮擦的使用是画图板设计的核心也是难点,而且两者的实现原理是一样的,我们通常画图的时候,一定是先单击鼠标然后拖拽鼠标最后释放鼠标的,所以,在画图的过程中,只要鼠标单击一下就获得(x1,y1),紧接着用if语句判断画的基本图形是哪一个,如果是铅笔或者橡皮擦,则获得(x2,y2),说明在铅笔或橡皮擦的时候,鼠标单击一下,就获得一个点,x1=x2,y1=y2,且这个点的坐标就是鼠标单击的位置,而且这个点是算作第一个基本图形的,此时index=1;拖拽的过程中动态获得鼠标所在位置的横纵坐标且始终x1=x2,y1=y2,并且等于第一个基本图形也就是index=1的那个点的x2,y2,即,在铅笔作画的过程中,在鼠标不断拖拽的过程中,index=1时的那个点在以点的点的长度不断增加,这就是铅笔作画过程的实现;鼠标释放的时候,在铅笔或橡皮的状态下,也是得到一个点。所以,可以总结,铅笔和橡皮都是通过设置画直线方法中的点的坐标相等来实现的。其它图形的绘制,可以直接调用Graphics2D中的方法实现,相对比较简单。

3 详细设计与实现

3.1 框架类DrawGraphic

3.1.1菜单

菜单栏有两个按钮“画图板”、“帮助”,通过添加内部匿名类来实现,一旦下拉菜单中的“新建”、“打开”、“保存”、“退出”四个键被触发,就调用相关的函数,具体代码如下:

(1)“新建”执行时,调用的函数代码如下:

public void newFile(){

index = 0;

currentChoice = 3;

color = Color.BLUE;

stroke = 1.0f;

createNewItem();

repaint();

}

(2)“打开”执行时,调用的函数代码如下:

public void openFile(){

JFileChooser fileChooser = new JFileChooser();//为用户选择文件提供了一种简单的机制

fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);

int result = fileChooser.showOpenDialog(this);//弹出一个 "Open File" 文件选择器对话框,父组件

if(result == JFileChooser.CANCEL_OPTION) return;

File fileName = fileChooser.getSelectedFile();

fileName.canRead();//测试应用程序是否可以读取此抽象路径名表示的文件

if(fileName == null||fileName.getName().equals("")){

JOptionPane.showMessageDialog(fileChooser, "这个名字不可以用的"," ",

JOptionPane.ERROR_MESSAGE);

}

else{

try{

FileInputStream fis = new FileInputStream(fileName);

input = new ObjectInputStream(fis);

int countNumber=0;

countNumber = input.readInt();

for(index=0;index

Drawings inputRecord = (Drawings)input.readObject();

itemList[index] = inputRecord;

}

createNewItem();

input.close();

repaint();

}catch(EOFException endofFileException){//当输入过程中意外到达文件或流的末尾时,抛出此异常

JOptionPane.showMessageDialog(this, "no more record in file",

"end of file",JOptionPane.ERROR_MESSAGE);

}catch(ClassNotFoundException classNotFoundException){

JOptionPane.showMessageDialog(this, "unable to create object",

"class not found",JOptionPane.ERROR_MESSAGE);

}catch(IOException ioException){

JOptionPane.showMessageDialog(this, "error during read from file",

"read error",JOptionPane.ERROR_MESSAGE);

}

}

}

(3)“保存”执行时,调用的代码如下:

public void saveFile(){

JFileChooser fileChooser = new JFileChooser();

fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY); //允许用户只选择文件

int result = fileChooser.showSaveDialog(this);//弹出一个 "Save File" 文件选择器对话框

if(result == JFileChooser.CANCEL_OPTION) return;

File fileName = fileChooser.getSelectedFile();

fileName.canWrite();

if(fileName == null||fileName.getName().equals("")){

JOptionPane.showMessageDialog(fileChooser, "这个名字不可以用的"," ",JOptionPane.ERROR_MESSAGE);

}

else{

try{

fileName.delete();

FileOutputStream fos = new FileOutputStream(fileName);

output = new ObjectOutputStream(fos);

output.writeInt(index); //写入一个32位的int值

for(int i= 0;i

Drawings outputRecord = itemList[i];

output.writeObject(outputRecord); //将指定的对象写入 ObjectOutputStream

output.flush(); //此操作将写入所有已缓冲的输出字节,并将它们刷新到底层流中

}

output.close();

fos.close();

}catch(IOException ioe){

ioe.printStackTrace();

}

}

}

3.1.2工具栏

工具栏按钮功能的实现,是通过添加两个内部事件监听类ButtonHandler1、ButtonHandler2来达到目的的。

(1)ButtonHandler1监听绘制基本图形的按钮,if语句判断事件源,具体代码如下:

public class ButtonHandler1 implements ActionListener{

public void actionPerformed(ActionEvent e){

for(int j=3;j

if(e.getSource()==choices[j]){

currentChoice = j;

createNewItem();

repaint();

}

}

}

}

(2)ButtonHandler2监听颜色选色器、画笔粗细、添加文字按钮,if语句判断事件源,相应的按钮被触发,就执行相应的函数,具体代码如下:

public class ButtonHandler2 implements ActionListener{

public void actionPerformed(ActionEvent e){

if(e.getSource()==choices[choices.length-3]){

chooseColor();

}

if(e.getSource()==choices[choices.length-2]){

setStroke();

}

icon = new

ImageIcon(getClass().getResource("/images/smile.png"));

if(e.getSource()==choices[choices.length-1]){

JOptionPane.showMessageDialog(null, "想在哪里添加文字呢?鼠标先点一下那里吧!",

" ",https://www.360docs.net/doc/811930890.html,RMATION_MESSAGE,icon);

currentChoice = 14;

createNewItem();

repaint();

}

}

}

3.1.3画图区域

(1)createNewItem()用来new各种基本图形,在函数的一开始,我设置了一下光标的样子,然后用switch函数接收currentChoice来判断用户要new的是哪一个基本图形,关键代码如下:

void createNewItem(){

if(currentChoice == 14){

drawingArea.setCursor(Cursor.getPredefinedCursor(Cursor.TEXT_CURS OR));

}

else{

drawingArea.setCursor(Cursor.getPredefinedCursor(Cursor.CROSSHAIR _CURSOR));

}

switch(currentChoice){

case 3:itemList[index] = new Pencil();break;

case 4:itemList[index] = new Line();break;

case 5:itemList[index] = new Rect();break;

case 6:itemList[index] = new fillRect();break;

case 7:itemList[index] = new Oval();break;

case 8:itemList[index] = new fillOval();break;

case 9:itemList[index] = new Circle();break;

case 10:itemList[index] = new fillCircle();break;

case 11:itemList[index] = new RoundRect();break;

case 12:itemList[index] = new fillRoundRect();break;

case 13:itemList[index] = new Rubber();break;

case 14:itemList[index] = new Word();break;

}

itemList[index].type = currentChoice;

itemList[index].R = R;

itemList[index].G = G;

itemList[index].B = B;

itemList[index].stroke = stroke;

}

(2)chooseColor()用来选择各种颜色,具体代码如下:

public void chooseColor(){

color = JColorChooser.showDialog(null, "在这里选择自己喜欢的颜色", color);

R = color.getRed();

G = color.getGreen();

B = color.getBlue();

}

(3)setStroke()用来设置画笔粗细,具体代码如下:

public void setStroke(){

String input;

input = JOptionPane.showInputDialog(null,"在这里重新输入画笔的粗细值(一个>0的实数)","1.0");

stroke = Float.parseFloat(input); //将字符串参数转换为一个 float 值

itemList[index].stroke = stroke;

}

(4)mouseA监听鼠标单击、释放、进入、离开四个事件,当鼠标单击的时候,用 e.getSource()先得到一个点的坐标初始化(x1,y1),再判断单击的是哪一个按钮,如果是绘制其它图形的按钮,那就光得到一个点(x1,y1);如果是铅笔或者橡皮擦,则继续初始化第二个点的坐标(x2,y2),此时x1=x2,y1=y2,即鼠标单击绘出一个点,而这个点是用绘直线方式画出的,表示已绘制的图形个数的index++;如果是添加文字按钮,则弹出一个可以输入文字的对话框。当鼠标释放的时候,如果是铅笔或橡皮,同样得到一个点,如果是绘制其它图形的基本按钮,那就光得到(x2,y2),关键代码如下:

class mouseA extends MouseAdapter{

public void mousePressed(MouseEvent e){

statusBar.setText("Mouse

Pressed@:["+e.getX()+","+e.getY()+"]");

itemList[index].x1 =e.getX();

itemList[index].y1 =e.getY();

if(currentChoice == 3||currentChoice == 13){

itemList[index].x2= e.getX();

itemList[index].y2= e.getY();

index++;

createNewItem();

repaint();

}

if(currentChoice == 14){

itemList[index].x1 = e.getX();

itemList[index].y1 = e.getY();

String input;

input = JOptionPane.showInputDialog("可以添加你想写的文字咯!");//可以输入内容的对话框

itemList[index].s1 = input;

itemList[index].x2 = f1;

itemList[index].y2 = f2; //f1,f2用来存放当前字体风格

itemList[index].s2 = stylel;

index++;

currentChoice = 14;

createNewItem();

drawingArea.repaint();

}

}

public void mouseReleased(MouseEvent e){

statusBar.setText("Mouse

Released@:["+e.getX()+","+e.getY()+"]");

if(currentChoice == 3||currentChoice == 13){

itemList[index].x1 = e.getX();

itemList[index].y1 = e.getY();

}

itemList[index].x2 = e.getX();

itemList[index].y2 = e.getY();

index++;

createNewItem();

repaint();

}

}

(5)mouseB监听鼠标拖拽和移动,在鼠标拖拽的时候,由于鼠标的拖拽一定是在单击之后的,所以mouseA和mouseB的监听功能必须连在一起来分析,上面得知,如果事件源是铅笔或橡皮,鼠标单击就得到了第一个点,紧接着鼠标开始拖拽,拖拽的过程中,也一直在动态的得到点,只是第一个点的x2,y2一直在以点的长度动态增加,index++;如果事件源是绘制其它图形的按钮,则鼠标在动态拖拽的过程中只需要,得到点(x2,y2)就好:

class mouseB extends MouseMotionAdapter{

public void mouseDragged(MouseEvent e){

statusBar.setText("Mouse

Dragged@:["+e.getX()+","+e.getY()+"]");

if(currentChoice == 3||currentChoice == 13){

itemList[index-1].x2= itemList[index].x2=

itemList[index].x1=e.getX();

itemList[index-1].y2= itemList[index].y2=

itemList[index].y1=e.getY();

index++;

createNewItem();

}

else{

itemList[index].x2 = e.getX();

itemList[index].y2 = e.getY();

}

repaint();

}

public void mouseMoved(MouseEvent e){

statusBar.setText("Mouse

Moved@:["+e.getX()+","+e.getY()+"]");

}

}

3.2 基本图形类

3.2.1 父类Drawings

class Drawings implements Serializable{

int x1,y1,x2,y2;

int R,G,B;

float stroke;

int type;

String s1,s2;

void draw(Graphics2D g2d){};

}

3.2.2 子类(只列出部分)

(1)铅笔:

class Pencil extends Drawings{

void draw(Graphics2D g2d){

g2d.setPaint(new Color(R,G,B));

g2d.setStroke(new BasicStroke(stroke));

g2d.drawLine(x1, y1, x2, y2);

}

}

(2)空心圆

class Circle extends Drawings{

void draw(Graphics2D g2d){

g2d.setPaint(new Color(R,G,B));

g2d.setStroke(new BasicStroke(stroke));

g2d.drawOval(Math.min(x1, x2),Math.min(y1, y2),

Math.max(Math.abs(x1-x2),Math.abs(y1-y2)),Math.max(Math.abs(x1-x2 ),Math.abs(y1-y2)));

}

}

(3)实心圆

class fillCircle extends Drawings{

void draw(Graphics2D g2d){

g2d.setPaint(new Color(R,G,B));

g2d.setStroke(new BasicStroke(stroke));

g2d.fillOval(Math.min(x1, x2),Math.min(y1, y2),

Math.max(Math.abs(x1-x2),Math.abs(y1-y2)),Math.max(Math.abs(x1-x2 ),Math.abs(y1-y2)));

}

}

(4)橡皮擦:

class Rubber extends Drawings{

void draw(Graphics2D g2d){

g2d.setPaint(new Color(255,255,255));

g2d.setStroke(new BasicStroke(stroke+7));

g2d.drawLine(x1, y1, x2, y2);

}

}

(5)文字

class Word extends Drawings{

void draw(Graphics2D g2d){

g2d.setPaint(new Color(R,G,B));

g2d.setFont(new Font(s2,x2+y2,((int)stroke)*30));

if(s1!=null)

g2d.drawString(s1, x1, y1);

}

}

4 设计中的难点

4.1多态与动态绑定

绑定指的是一个方法的调用与方法所在的类(方法主体)关联起来。对java 来说,绑定分为静态绑定和动态绑定;或者叫做前期绑定和后期绑定。

动态绑定:在运行时根据具体对象的类型进行绑定。若一种语言实现了后期绑定,同时必须提供一些机制,可在运行期间判断实际对象的类型,并分别调用相应的方法。JAVA中的多态就是借助动态绑定来实现的。

先定义一个父类Drawings实现接口Serializable,里面定义一个draw(),然后所有的基本图形类都从父类继承,作为子类,它们都重写了父类的draw方法,但是每个draw()都不一样,在绘制任何形状的时候,只需要简单的调用父类的draw()即可,然后让程序动态的根据对象的类型,决定使用哪个子类的draw 方法,为了使画出的图形更加的美观,我在draw方法中使用了Graphics2D对象的引用。这样,有了多态的存在,就可以在不改变原程序的情况下,对其可以画出的图形进行扩展,丰富程序的功能。

4.2重绘的理解

当一个窗口被构造出来的时候,里面就有一支画笔,在这个窗口出现再次显示、或大小改变等情况的时候,窗口就需要被重画,只要窗口需要被重画,paint 就会被自动调用。repaint的作用是让窗口进行强制重画,其内部调用了paint 方法,所以整个窗口在调用repaint的时候,也会被重画。

从而,我们可以理解图形系统共同采用的机制,它里面一定会有一个类似repaint()的方法,在窗口调用这个方法的时候,整个屏幕进行重画,而这个方法的调用过程一定是分成两步的,先调用update(),然后再调用paint()。画笔在我们new出来的窗口里面,repaint()里面没有画笔,update()和paint()里面有画笔,如果没有找到窗口里的画笔,不可以直接调用paint()。

4.3文件的新建、打开和保存

JAVA把每个文件都视为顺序字节流,如果在JAVA中要用到文件处理,必须用到java.io包,这个包定义了一些流类,选用FileInputStream从文件中读入数据,选用FileOutputStream向文件中输出数据,通过建立这些文件对象变可以打开文件。如果想把一个对象序列化成一个字节流,写到硬盘上,那么就必须实现接口Serializable,这是一个标记性的接口,给实现它的类打了一个标记,给编译器看的,知道这个类可以被序列化。

5 运行测试

程序运行后,按“打开”可有如下界面:

图5-1 模拟画图器界面

图5-2 铅笔自由作画

图5-3 基本图形绘制

6 总结

对于这次JAVA课程设计,我认为自己设计的模拟画图器有一些成功的地方,也有很多问题需要通过以后的学习不断寻求解决的方案。

先说自己有成就感的地方,这是我第一个用图形界面设计出来的、有实用性的程序,虽然看起来很简单,可实现起来并不容易,可以说是困难重重,我开始的时候是无从下手的,通过上网查资料,去学校的图书馆借阅相关书籍,才实现了现在的这些功能,即可以在画板上面实现自由作画,画出一些基本的图形,而且界面上的一些基本图形的小图标都是我用小图标制作软件做出来的,虽然不是很美观的,但至少是独一无二的。

其实,这次的课程设计更多的是让我看到了自己的不足,在设计之前,我构想了很多的功能,比如说,撤销重做等,或把画图时常用的一些功能键都添加在工具栏当中,但是由于自己的尤其是在自己测试的过程中,发现和其它的画图软件相比,我仍有很多功能需要实现比如说撤销重做的功能,虽然查阅了很多的资料,但还是没能够添加到程序当中来。还有,我觉得自己程序的先有实现当中,存在一个最大的问题,就是预先分配好了在画板中可绘制的图形个数,所以一旦超出了这个范围,就会出现问题。

在设计的过程中,我对一些知识有了更深刻的理解,比如说多态,像我在程序设计的时候需要构造很多个不同的基本图形的类,就可以先构造一个基本图形的父类,让那些直线、圆,矩形等都从它去继承,使程序的可扩展性增强。

总之,我会不断地努力学习JAVA这门语言,现在简单的课程设计只是一个开始,只有不断的动手去编写更多的程序,才可以在实践中获得经验。

参考文献

[1] 董小园.JAVA面向对象程序设计.北京:清华大学出版社,2011.

[2] 张跃平.JAVA实用教程.北京:电子工业出版社,2011

[3] 李钟尉,陈丹丹.JAVA开发实战1200例(第I卷).清华大学出版社,2011

[4] 李钟尉,陈丹丹. JAVA开发实战1200例(第II卷).清华大学出版社,2011

信息技术教案——画图

信息技术教案——画图 第一课美妙的“画图”世界 一、教学目的 1、掌握启动“画图”程序的方法 2、初步认识“画图”的功能与窗口的名称 二、教学重难点 1、“画图”程序的启动与退出 2、认识“画图”程序窗口的组成和画图工具 三、教学地点:教室 四、教学过程 引言:看书上这些美丽的图画,都是同学们使用Windows操作系统提供的画图工具完成的。使用计算机画图,既节约了纸和笔,又省去了调配颜料的麻烦,而且绘画方法很简捷,功能强大。相信经过学习,同学们都会成为出色的“电脑小画家”。 (一)启动“画图” 步骤: “开始”→“程序”→“附件”→“画图” 如果我们经常使用画图程序,也可以将它设为快捷方式,放在桌面上。 (二)认识“画图”窗口 1、标题栏:用来显示当前所画图画的文件名。 2、菜单栏:提供了对“画图”程序进行各种操作的命令,单击某一项都会拉出相关操作的下拉菜单。 3、画板:可以画画的区域,相当于平时画画的画纸。 4、工具箱:包含了画图时所用到的16种工具。 5、状态栏:提供了当前画画时所选工具的作用。分为三部分: ①提示信息栏:提示当前工作状态的信息说明。 ②绝对坐标:指出鼠标在画板中的坐标位置。 ③相对坐标:提示鼠标当前位置距前一个绘图点的坐标方向的距离。 注意:1、如果窗口较小,可以最大化窗口。 2、如果画板较小,可以选择“图像”菜单中的“属性”选项,在弹出的对话框中宽度和高度的值改为720和450;或者把鼠标指针移到画板右下角处,用拖拉鼠标的方法将画板拉至满意的位置为止。 (三)选择画图的工具 在程序的工具箱中提供画画的工具有16种,默认的工具是铅笔工具。如果想选择哪一个工具就用鼠标单击这一项即可。被选中的工具的按钮被按下去,呈现出“凹下”状态,同时,鼠标指针也变成工具符号。工具箱的下边也会出现所对应的工具状态框,给出当前所选工具的几种状态。 提示:在“画图”程序中如果没有工具箱时,可以从“查看”菜单中选“工具箱”选项,如果“工具箱”没有在窗口左侧,可以双击“工具箱”标题处,此项内容就会回到窗口左侧,或者用拖动的方法将“工具箱”拖动到任意的位置。 (四)退出“画图”窗口 步骤: 1、“文件”→“退出”

java画板课程设计报告

画板 一、需求分析 平时生活中,我们会需要处理一些基本的图像,也有可能需要花一些简单的图像,平时所使用的图形处理工具有PhotoShop、Windows 画图工具等,其中PhotoShop 是一款非常强大的图形处理工具,Windows 画图工具则是一款较为简单的画图工具,功能较为简单,用Windows画图工具,是一种比较简单与具有代表性的画图工具,虽然功能不够强大,但具有大多图片处理程序所必需的基本功能:铅笔画图、各种数学函数图形、填色、取色、橡皮擦等等。这次试验中我做的就是一个仿照windows画板的程序。 功能:1.利用graphics 类来向界面上画上相应内容 2.能够画出直线,矩形,多边形,椭圆形,圆矩形等 3.能够实现橡皮,刷子,喷枪等工具。 4.能够实验颜色的设置 5.能够保存图片和打开图片(当保存名一致时需提示) 6.界面尽量合理,可以仿照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 提供的一个简单的文件选择机制,我们这里扩展这个类,是为了增加我们自己的文件过滤器。 三、运行环境、开发语言 Window xp 和elipse Java语言

JAVA简单画板程序设计实验报告

JAVA期末画板实验报告 课程题目: 运用JAVA语言编写一个画板程序,这个画板要有画图,特殊图形绘制,颜色改变,画笔大小改变等功能。 设计思想: 1.进行界面设计 2.进行算法实现 3.运行调试 4.总结问题 设计过程: A.界面设计 新建一个Jframe容器,然后定义一个panel(Panel convas2),convas2是工具栏。用borderlayout布置容器的边框布局,将工具栏放在NORTH部分。完成界面设计。 add(canvas2,BorderLayout.NORTH); Panel canvas2 = new Panel(); 添加工具按键 Panel canvas2 = new Panel(); Button btn1 = new Button("直线"); Button btn2 = new Button("椭圆"); Button btn3 = new Button("矩形"); Button btn4 = new Button("清除"); Button btn5 = new Button("画笔"); Button btn6 = new Button("橡皮"); Choice choice = new Choice(); Choice choice1 = new Choice(); canvas2.add(choice); canvas2.add(choice1);

canvas2.add(btn1); canvas2.add(btn2); canvas2.add(btn3); canvas2.add(btn4); canvas2.add(btn5); canvas2.add(btn6); 在工具表中,有两个下拉菜单,分别收录画笔的大小和颜色。1.画笔的大小: choice1.add("1"); choice1.add("3"); choice1.add("5"); choice1.add("7"); choice1.add("9"); 2.画笔颜色 choice.add("黑色"); choice.add("蓝色"); choice.add("红色"); choice.add("黄色"); choice.add("绿色"); 3展示画板

初始画图软件教案

《认识画图软件》的教案 【教材分析】 内容分析:《认识画图软件》一课,是小学信息技术课程四年级上册第一课的内容。本课是学生在初步了解用计算机绘画制作的基础上,设置的一节课。本课的主要内容由:作品赏析、启动画图、窗口组成、选择工具、做一做等组成。 教学对象分析:本班学生是小学四年级的儿童,学生在学习方面拥有激烈的学习绘图兴趣,较好的理解能力、表达能力、操作能力,学习效率极高,他们善于模仿,喜欢创新,遇到困难能积极向同学或老师提问,同学之间居于哦热情相助的习惯。 学生的初始能力:由于是第一次接触电脑绘图软件,大部分学生只有纸上绘图的操作基础。 学生的信息素养:学生虽然有在纸上绘图的经验,但没有在电脑上绘图的经验。 【教学方法】 案例教学法、演示法、任务驱动法、小组讨论法 本节课的内容针对于小学四年级的学生来说,因为他们的使用计算机的能力还相当有限,即使在前期做了很好的设计规划,讲授过程中仍然十分费力,有一些难度。通过在导入部分展示一些“欣赏作品”,激发学生学习画图软件的兴趣和愿望,引入本课的学习。在启动画图软件的教学环节,我采用演示法,一边讲解进入画图的两种方法,让学生感受到进入画图软件不同的方法。设置一个任务,让学生运用已学习的知识、巩固知识,发挥动手能力,充分调动学生学习的积极性,以任务驱动的方式查漏补缺,使教学内容合理流动,水到渠成。最后,四个人为一个小组,用讨论的方式进行学习,解决在学习过程中遇到的问题,在探究中找到乐趣。 【教学目标】 知识与技能: 1、通过学习,让学生知道Windows7系统中自带的一个画图软件。 2、掌握画图软件的进入与退出,并熟悉画图软件的窗口。 3、熟练说出工具箱中工具的名称及用途。 4、使用铅笔工具写字和刷子画树 过程与方法: 1、通过让学生欣赏作品,让学生初步了解画图的作用,激发学生学习画图软件的兴趣。 2、通过学生交流、师生交流,培养学生使用画图软件提高电脑绘图的能力。 情感态度与价值观 1、通过学生本体的学习探索与实践操作,增强学生学习软件的兴趣,培养实践探索精神及合作精神。适时渗透学生德育教育。 2、通过小组协作和竞赛研究活动,培养学生合作学习的意识、竞争参与意识和研究探索的精神,从而调动学生的积极性。 【重点和难点】 重点:初识“画图”窗口组成;认识绘图工具箱。 难点:用鼠标选择前景色和背景色;用铅笔写字与刷子画树。 【教学环境】

计算机图形学课程设计报告交互式绘图系统

课程设计报告 课程名称计算机图形学 课题名称交互式绘图系统 专业计算机科学与技术 班级 学号 姓名 指导教师刘长松曹燚 2012年10 月9 日

湖南工程学院 课程设计任务书 课程名称计算机图形学 课题交互式绘图系统 专业班级 学生姓名 学号 指导老师刘长松曹燚 审批 任务书下达日期2012年9月15 日任务完成日期2012 年10月9 日

一、设计内容与设计要求 1.设计内容: 用橡皮法实现交互式绘图系统。 2.设计要求: 在屏幕上可以选择不同的命令、来实现不同基本图形的绘制。完成橡皮筋直线,橡皮筋圆,橡皮筋矩形框,多边形裁剪和3阶B样条曲线的作图,且要有比较友好的界面。 3.算法提示: 首先在屏幕上画出菜单和绘图窗口,显示鼠标。点击相应菜单,点击鼠标,移动鼠标,获取鼠标移动相对位置,画出相应图形。 相关变量定义: #define _MOUSE鼠标#define CIRCLE 1圆 #define LINE 2直线#define RECTANGLE 3矩形#include "stdio.h" #include "string.h" #include"graphics.h" #include"math.h" #include union REGS inreg,outreg; struct SREGS sr; 相关函数: void meun(int x,int y,char *str) { setcolor(8); outtextxy(x+5,28,str); setcolor(15); line(x,22,x,40); line(x,22,y,22); setcolor(8); line(x,40,y,40); line(y,22,y,40); }

用Windows自带的“画图”软件绘图的方法及技巧

用Windows自带的“画图”软件绘图的方法及技巧 1引言 对于绝大多数微机用户来讲,用电脑画图始终是个令人感到头疼的问题。尽管许多常用的文字处理软件(如:Word)都带有绘图功能,但是使用这些软件画图却费时费力,效果不佳。一个图形往往会被操作者画得七零八落。有些用户虽然安装了如AutoCAD等专业绘图软件,但由于这些软件专业性太强,甚至对操作者的英文水平有相当的要求,因此能够熟练驾驭此类绘图软件的操作者很少。甚至多数普通操作者的微机中根本就未安装这些软件。 其实,要想快速画出漂亮、实用的图形并不难。通过摸索,发现并总结了一套使用电脑画图的方法,只要您的电脑中安装的是最常用的Windows操作系统,就可以利用其自带的“画图”功能软件,简洁快速地画出规整漂亮的图形来。 2在Windows操作系统中找到“画图”工具软件 用鼠标沿着电脑屏幕左下方开始的以下级联菜单一路单击,即可找到“画图”工具软件:开始→所有程序→附件→画图。打开画图程序界面后,操作者就可以施展本领,进行画图操作了。 3“画图”工具软件的基本功能介绍 在画图软件界面的左侧列有十六个功能按钮,将鼠标箭头指向任何一个功能按钮都会自动显示提示文字,告知每个按钮的基本功能。这些功能主要有“直线”、“矩形”、“椭圆”、“橡皮擦”、“文字”等。以画矩形为例来说明功能按钮的基本使用方法:用鼠标单击矩形功能按钮→将鼠标箭头移至右侧空白的画图区域→按下鼠标左键不要松开→斜向拖动鼠标→松开鼠标。这样,一个矩形的绘制就完成了。鼠标拖动的方向就是矩形对角线的方向。读者可以仿照此例,练习一下直线、椭圆等图形的画法。 若画图软件界面没有出现这十六个功能按钮,可以用鼠标单击“查看”下拉菜单,选中“工具栏”一项,则屏幕界面上就会显示这些功能按钮。 4功能性技巧介绍

人教版初一《用画图软件设计邮票》教学设计

人教版初一《用画图软件设计邮票》教学设计 教材:《初中信息技术》(人民教育出版社) 第一册第一单元活动三《用计算机画画》第二课时 学生:初中一年级 教学环境:电脑网络教室,多媒体网络教学平台 课时:1课时 一、本节课设计思路 1、教材和学生现状分析 我记得有学生问过我这样一个问题,老师学某某软件有什么用?为什么会这么问,因为学生不知道学了这个软件能做什么。虽然在教某一个软件的时候会介绍这个软件的作用,但不让学生亲自用这个软件去完成某一样东西的时候,学生只会感到很茫然,学起来很盲目。因此我设计本堂课的目的,就是能让学生学以致用。画图软件是一个学生比较感兴趣的软件,在前一课的学习中,学生已经掌握了画图软件各种画图工具的使用,并能自己创作画出一些美丽漂亮的图画。在这样的基础上,教材又进行了加深,要利用画图软件对图片进行编辑和修改。教材上这节内容设计比较散、乱,根据我校学生的实际情况和他们爱动手、想获得成就感的心理特点,于是,我就想了一个容易使学生感兴趣也容易获得成就感的题目,用画图软件设计邮票。在设计邮票的过程中既可以使学生掌握图片的编辑和修改方法,又可以增长学生的知识,激发学生的创作欲,设计出各种不同的邮票。 2、本节课的教学目标 1)知识与技能 ①使学生了解画图软件的其它用途 ②使学生了解一些邮票的知识 ③掌握邮票设计的几个要素 2) 过程与方法 ①使学生掌握选取图片、复制移动、旋转拉伸图片的方法 ②掌握“编辑”、“图象”等菜单的使用 ③综合利用画图各种工具设计邮票 3)情感态度价值观 ①培养学生动手能力和创造力 ②激发学生学习信息技术的兴趣 3、本节课的教学重点和难点 重点:①选取图片、复制移动、旋转拉伸图片的方法 ②“编辑”、“图象”等菜单的使用 难点:画图中各种工具的综合利用 4、本节课的教学方法 任务驱动、讲练结合、自主探究学习 (这节课的任务就是设计制作出一张邮票,通过邮票各部分设计任务的完成,最终完成这个大任务) 5、本节课的教学手段 多媒体教学网(广播教学)、教学课件、学件、实物投影仪 学生的作品展示 6、课前准备

画图工具可行性报告

Java实训课程设计报告Windows画图工具 专业:计算机科学与技术班级:11092311 姓名:曾思哲 学号:11923110

2014年6月

项目简介

Windows画图工具的设计 第1章需求分析 1.1 项目背景 随着社会的不断发展,人们对画面要求越来越高,对画图工具的软件提出了更高的要求。 画图工具的软件可以让用户更加节省时间,可以从其他文件找出一些图片修改一下就可以使用,比起传统的手工的画图来说,不单单是节省时间而且画面要好的多,保存起来也比较方便,下次在用的时候一找就出来了。在比如画面的修改在这套软件上我们可以直接使用彩色,使画面更直观,而且还可以修改,画图的软件现在应用于各行各业,这款软件特别适合教学用,学生画图也是比不可缺少的。 1.2 需求分析 需求分析是从客户的需求中提取出软件系统能够帮助用户解决的业务问题,通过对用户问题的分析,确定系统的功能需求。这个步骤是对理解需求的升华,直接关系到该系统的质量。分析的根本目的是在开发者和提出需求的人之间建立一种理解和沟通机制,因此,系统的需求分析也应该是开发人员和用户或客户一起完成的。 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)等主要用于不同情况的使用,在面板上方便用户的使用。 ●储存模块 ①判断当前画板是否保存(MyImage)。 ②设置多种存储的格式供用户选择,增加文件过滤器(addFilter)。 ③存储路径可以设置默认的。 ●颜色模块 通过创建颜色选择器(ColorChooser),来让用户获取颜色,供用户使用。 ●帮助模块 系统帮助文档和软件的声明。 3.2 功能设计 主要功能如下: 1、画笔 PencilTool这个类继承于AbstractTool类,PencilTool类中有个对象Tool 用户通过点击画板上的图标来获取画笔,它的功能让用户用来画出各种图形。 2、格式刷子 BrushTool这个类继承于AbstractTool类,它的功能让用户画出更好的图形。

C制图常用工具使用方法

C制图常用工具使用方 法 集团企业公司编码:(LL3698-KKI1269-TM2483-LUI12689-ITT289-

选择工具栏要勾选的几个选项。左下角显示模式: 1、矩形 选择工具,出现: , 点击起始点后出现:(注意命令提示,一般常用命令为D) 输入’d’: 随后出现: 输入具体值 输入具体值 随后出现 有四个方向可选。 2、扩边、平移、线宽 扩边:首先选中图形,选择偏移工具 输入偏移数值: 选择偏移方向(外偏移、内偏移): 点击右键确认。 平移: 首先选中图形,选取平移工具,制定基点(相对不动的点): 挪动鼠标,虚线图形随鼠标移动,到合适位置后点击鼠标左键完成。

线宽选择: 选择图形,点击下拉菜单: 选择合适线宽即可。 3、标柱 首先设置标柱样式: 出现对话框: 选择修改项,修改其内容 修改完成后确定。在需要标柱图形左起始点,点击 在需要标柱图形右结束,点击 松开鼠标,向上滑动鼠标,到合适位置点击左键。 4、缩放 选取图形,选择工具,首先选择基点,图例将矩形右下角为基点,

滑动鼠标, 注意左下角文字说明 比较直观的缩放方法是选择“r”命令 在图形下发点击左键,出现: 再滑动鼠标出现 点击左键,出现图形: 缩放到合适大小后点击鼠标左键。 5、旋转 选择图形,点取工具,制定基点 移动鼠标 6、圆弧 选择工具,选择起点 选择第二个点 命令参数有: 一般画门的时候可应用,例如: 7、打断 选择工具: 8、带基点复制 选择图形,后标题栏中选取: 制定基点,基点可根据实际情况选取。 例如以左下角为基点: 移动鼠标,鼠标中心点即为图形的坐下角,后粘贴:将鼠标靠近原图型,

软件工程JAVA课程设计报告

西安科技大学 软件工程课程设计报告 题目:画图板应用程序开发 班级 学号: 姓名: 2010年12月

目录 1 绪论 (3) 2 可行性研究报告 (3) 3 需求分析报告 (4) 4 总体设计报告 (7) 5 详细设计报告 (8) 6 系统实现报告 (12) 7软件测试报告 (32) 参考文献

1、绪论 1.1 目的和意义 用过微软Windows操作系统的人一定都对Windows自带的画图板非常熟悉了。同图像处理软件界的老大Photoshop比起来,它虽然不及Photoshop的功能强大,内容丰富,但是作为Windows一直以来都内带的附件程序,它具有小巧玲珑,简单实用等其他绘图软件所不具备的优点。同时它的风格也被许多其他的绘图软件所仿效。 作为一个软件工程专业的学生自己也想亲自动手编写一个属于自己的,简单实用的绘图程序。通过本次课程设计可以增加对整个流程的熟悉以及对程序组织结构和框架的理解,对以后开发和设计更大更复杂的程序无疑有更大的帮助。 任务 书写开发文档,分析和制定整个开发过程,然后开发一个自己的画图板应用程序。 2、可行性研究报告 进行可行性研究的方法 本应用程序可行性研究是通过对比windows自带的画板程序的方式进行的,对Windows 里面的画板进行分析研究,分析得出本应用软件应该实现的基本功能,并根据自己的能力进行了功能上的增加。 评价尺度 本软件在评价时应从以下几个方面进行分析: 开发时间应尽量短; 功能实现的代码应尽量少; 代码执行效率要高; 有较强的容错能力; 技术方面的可行性 系统现阶段的发展过程中,利用现有人力和物力是完全具备的能力开发出来的,作为阶段性产品,日后的发展空间大,实现方法逐步简单容易,所以画图板应用程序在技术上是完全可行的。 a.在当前的限制条件下,该程序的功能目标能达到; b.利用现有的技术,该程序的功能可以实现; c.由于能力的不足,现阶段的功能不够完美,还可以在日后完善; d.在规定的限期内,本程序能够完成; 法律方面的可行性 本程序不会在后台扫描用户的磁盘文件; 本程序为完全免费,没有任何盈利行为,而且仅在内部流通,不予推广,所以不涉及浸犯微软版权的行为,所以本软件完全合法。 软件服务条款要与中华人民共和国的法律解释相一致,一致同意服从高等法院所有管辖。如发生软件服务条款与中华人民共和国法律相抵触时,则这些条款将完全按法律规定重新解释,而其它条款则依旧保持对用户产生法律效力和影响。 经济可行行

EXCEL中的绘图工具使用技巧

E X C E L中的绘图工具 使用技巧 Document serial number【LGGKGB-LGG98YT-LGGT8CB-LGUT-

EXCEL中的绘图工具使用技巧 2009-04-17 11:59:37 阅读5396 评论1 字号:大中小订阅 基础班选修课讲义 1、从绘图工具栏直接绘制直线、单边带箭头直线、椭圆、矩形; 2、从绘图工具栏“自选图形”中选择:线条、基本形状、箭头汇总、流程图、星与旗帜、标注、其它自选图形…… 3、添加和编辑绘制图形中的文字内容(右键-添加文字); 4、工具栏中直接选择“文本框”、“竖排文本框”; 5、图形右键菜单的其它功能(超链接、宏等)。 二、绘制单位正方形、单位圆、单位正xx…… 1、从绘图工具栏及其“自选图形”中选择矩形、椭圆、菱形、平行四边形等图标……到单元格内点击一下,就可生成单位正方形、单位圆、单位正xx……(对线条不起作用); 2、在绘图工具栏的“自选图形”中双击选择的图形,可直接生成单位圆、单位正方形、单位正菱形、单位正平行四边形等图案(单位边长)。 三、连续绘图 1、双击绘图工具栏中需要绘制的图形,比如椭圆、长方形、直线,以后可以连续绘制出椭圆/圆、长方形/正方形以及直线;按ESC键取消连续画图; 2、对绘图工具栏“自选图形”中的图形使用双击,只能产生“单位正xx”图形,不能连续绘图(其作用见“二、2”条)。 3、右键绘图工具栏-自定义-命令-自选图形-选择命令-拖到工具栏中,今后就可以双击这些图形连续绘图。 四、改变图形 1、改变绘制图形的线条、箭头、边框、色彩设置(右键或者双击图形,设置自选图形格式;工具栏中选择); 2、点击和转动相关图形中的绿色圆点转动图形; 3、使用绘图工具栏“翻转”按钮; 4、点击和拖动相关图形中的黄色圆点改变图形; 5、右键已经画好的图形,点击绘图工具栏的“绘图”,选择“改变自选图形”,再选择你想得到的图形; 6、绘图默认效果的设置; 7、(重要应用之一)改变单元格批注图形:单元格批注显示后,右键“批示”框,点击绘图工具栏的“绘图”,选择“改变自选图形”,再选择你要得到的图形;

Java画图板课程设计报告

目录 1 引言................................................................................................... 错误!未定义书签。 课程设计选题 .................................................................................. 错误!未定义书签。 课程设计的目的 .............................................................................. 错误!未定义书签。 本选题的设计背景.......................................................................... 错误!未定义书签。 2 需求分析 .............................................................................................. 错误!未定义书签。 功能需求......................................................................................... 错误!未定义书签。 软件开发运行环境........................................................................ 错误!未定义书签。 3 总体设计 .............................................................................................. 错误!未定义书签。 软件结构设计 ................................................................................ 错误!未定义书签。 结构设计................................................................................. 错误!未定义书签。 软件功能模块及主要类设计 ......................................................... 错误!未定义书签。 功能描述 ................................................................................... 错误!未定义书签。 总体结构图............................................................................... 错误!未定义书签。 主要类设计............................................................................... 错误!未定义书签。 4 详细设计与实现.................................................................................. 错误!未定义书签。 主界面............................................................................................. 错误!未定义书签。 主界面功能设计....................................................................... 错误!未定义书签。 主界面设计............................................................................... 错误!未定义书签。 主界面主要代码....................................................................... 错误!未定义书签。 菜单栏............................................................................................. 错误!未定义书签。 菜单栏功能设计....................................................................... 错误!未定义书签。 菜单栏界面设计....................................................................... 错误!未定义书签。 菜单栏主要代码....................................................................... 错误!未定义书签。 工具栏............................................................................................. 错误!未定义书签。 工具栏功能设计....................................................................... 错误!未定义书签。 工具栏界面设计....................................................................... 错误!未定义书签。 工具栏主要代码....................................................................... 错误!未定义书签。

用c++编画板的实训报告

一实训目的 (1)培养分析问题、解决问题的能力 (2)培养考虑问题的周密性和逻辑思维能力 (3)培养实际动手能力 (4)培养C++知识的综合运用能力 二实训任务和要求 1.图形: 带颜色的图形。(增加选色功能) 线粗不同的图形。(修改线粗的功能) 块状图。(图形的填充色和边线颜色可以不同,由用户选择) 等等。。 2. 界面 工具栏,状态栏,改变鼠标,查看窗口等等 3. 编辑 在重新打开时和在正常情况下一样画图或者选中图形进行图形编辑。 4. 文件保存 EMF文件,导入位图文件成为一个(由位图填充的)矢量矩形等等。 5. 编辑 单个图像拖动,改变图形节点位置 能够进行基本的图形绘制功能:直线,圆、矩形和多边形; 数据保存功能,能够把图形数据保存到文件中; 简单的编辑功能:改变线条和填充颜色以及线宽; 三实训过程和内容 3.1需求分析 (1)认识C++编程软件 C++是一种使用非常广泛的计算机编程语言。C++是一种静态数据类型检查的,支持多重编程范式的通用程序设计语言。它支持过程化程序设计、数据抽象、面向对象程序

设计、制作图标等等泛型程序设计等多种程序设计风格。C++支持C语言的几乎全部功能,在语法上与C语言仅有极微妙的差别;C++语言原本不具备面向对象的设计功能,然而随着面向对象编程的概念的提出以及如Java等语言的发展成熟,C++语言也开发出了支持面向对象功能的版本,现在编程者常用的VC++就是一种面向对象的语言;C++强大(但容易失控的)模板功能使它能在编译期完成许多工作,从而大大提高运行期效率。STL(C++标准模板库,Standard Template Library);随着STL的不断发展,它已经逐渐成为C++程序设计中不可或缺的部分,其效率可能比一般的native代码低些,但是其安全性与规范性使它大受欢迎。 (2)计算机图形的认识 在计算机科学中,图形和图像这两个概念是有区别的:图形一般指用计算机绘制的画面,如直线、圆、圆弧、任意曲线和图表等;图像则是指由输入设备捕捉的实际场景画面或以数字化形式存储的任意画面。图像是由一些排列的像素组成的,在计算机中的存储格式有BMP、PCX、TIF、GIFD等,一般数据量比较大。它除了可以表达真实的照片外,也可以表现复杂绘画的某些细节,并具有灵活和富有创造力等特点,而与图像不同,在图形文件中只记录生成图的算法和图上的某些特点,也称矢量图。在计算机还原时,相邻的特点之间用特定的很多段小直线连接就形成曲线,若曲线是一条封闭的图形,也可靠着色算法来填充颜色。它最大的优点就是容易进行移动、压缩、旋转和扭曲等变换。 3.2 设计 (1)C++程序中的应用程序对象 (a)基于窗口的应用程序还是使用MFC比较多,所以主要介绍一下MFC。 CWnd窗口:它是大多数“看得见的东西”的父类(Windows里几乎所有看得见的东西都是一个窗口,大窗口里有许多小窗口),比如视图CView、框架窗口CFrameWnd、工具条CToolBar、对话框CDialog、按钮CButton,etc;一个例外是菜单(CMenu)不是从窗口派生的。CDocument文档,负责内存数据与磁盘的交互。最重要的是OnOpenDocument(读入),OnSaveDocument(写盘),Serialize(读写)CView视图:负责内存数据与用户的交互。包括数据的显示、用户操作的响应(如菜单的选取、鼠标的响应)。最重要的是OnDraw(重画窗口),通常用CWnd::Invalidate()来启动它。另外,它通过消息映射表处理菜单、工具条、快捷键和其他用户消息。 CDC设备文本:无论是显示器还是打印机,都是画图给用户看。这图就抽象为CDC。CDC与其他GDI(图形设备接口)一起,完成文字和图形、图像的显示工作。把CDC想象成一张纸,每个窗口都有一个CDC相联系,负责画窗口。CDC有个常用子类CClientDC(窗口客户区),画图通常通过CClientDC完成。 CDialog:对话框 CWinApp应用程序类:似于C中的main函数,是程序执行的入口和管理者,负责程序建立、消灭,主窗口和文档模板的建立。 CGdiObject及子类:用于向设备文本画图。它们都需要在使用前选进DC。 CPen笔:画线 CBrush刷子:填充 CFont字体:控制文字输出的字体 CBitmap:位图

认识画图软件教学设计

《认识画图软件》教学设计 设计人:大方县兴隆乡兴隆小学郝家彬 教学内容: 贵州版信息技术教材四年级上册P1~P4。 教材分析: 本课是教材关于画图知识的初步认识,贯穿着以后整个画图的知识教学,是学生能够顺利、快捷操作使用画图的基础。本课主要介绍了启动“画图”程序的方法和了解“画图”窗口的组成及初步认识绘图工具箱、颜料盒。使他们明白用计算机画图,既不用纸和笔,也不用任何颜料。从而激发学生利用计算机画图的兴趣,调动学生的积极性。 学情分析: 由于本地未开设信息技术课程,因此这是学生第一次接触电脑绘图的学习,大部分的学生只有纸上绘图的操作基础。由于大部分学生可能没有接触过电脑,所以在教学中学生在操作方面会受到一定的影响。 教学目标: (一)知识与技能 1、认识电脑系统中自带的画图软件。 2、掌握画图软件的启动与退出的方法,并熟悉画图软件窗口的组成。 3、尝试自选画图工具完成一幅简单的图画。 (二)过程与方法:通过讲解与演示等方法,进一步让学生熟悉画图软件窗口的组成及画图工具,为以后能熟练运用画图软件画图打下基础。 (三)情感态度与价值观:通过画图软件的学习,激发学生对学习电脑的兴趣,感受成功,体验学习计算机,用计算机画画的快乐! 重难点分析: 重点是认识并掌握画图窗口的各个组成部分。 难点是画图软件工具的认识。 教学过程: 一、创设情境,激趣导入。 1.谈话 同学们,平时画画用的是什么工具呢?(学生自由说)今天老师想要送件礼物给大家,猜猜会是什么呢?(学生一脸迟疑)期待吗?好,请大家看向大屏幕,马上送给你们的礼物就出来了。 2.演示 教师用画图软件画出机器猫图,画完后问同学们,这是什么?(学生自由说)

Java画图软件设计报告

佛山科学技术学院 《可视化编程技术》课程设计报告 画图软件设计 学生姓名:周敏婷 学号:2011914123 年级专业:11级教育技术学2班 指导老师:容汝佳 学院:教育科学学院 广东★佛山 提交日期:2013年6月

目录 1. 前言 (2) 2.概要设计 (3) 2.1 开发环境 (3) 2.2 画图软件功能 (3) 2.3 界面设计 (3) 2.4 类的框架结构图 (4) 3. 详细设计 (4) 3.1 使用的JAVA类的说明 (4) 3.2 类的主要方法 (5) 3.2.1 颜色选择器 (5) 3.2.2 控制画笔样式 (5) 3.2.3 选取颜色按钮的监听件类 (6) 3.2.4 设计总体认识 (6) 3.2.5 程序流程图 (7) 4. 运行结果 (7) 5. 测试分析 (8) 5.1 程序运行情况 (8) 6. 源程序 (8) 参考文献 (14) 设计总结 (14)

摘要:该程序是一个图形界面的简单的java画图软件,具有良好的界面,使用人员能快捷简单地进行操作。该画图软件操作较为简单,只需要一直按着左键就能根据你鼠标移动的方面,画出你想要的图案。你也可以选择你自己想到的颜色和画笔的粗细。而且可以显示你当前的画笔的状态。界面为灰白对称。是一个非常简单的作图工具,让人能轻松上手。 关键字:java,画图类,方法,事件 1 前言 随着科学技术的不断发展,计算机已经成为我们工作学习和生活中不可缺少的工具。文本编辑器是个人计算机最司空见惯的应用程序了,在学习了Java语言之后,我决定使用Java语言编写一个简单的画图工具,可以实现简单的画图作图功能,满足日常基本的工作学习和娱乐需要。 Java是由Sun公司开发的新一代纯面向对象的网络编程语言。其目标是建立一种在任意种机器、任一种操作系统的网络环境中运行的软件,实行所谓的“程序写一次,到处运行”的目标。正因为如此,Java已成为当今Internet上最流行、最受欢迎的一种程序开发语言。 Java开发小组把Java按特性分为基本版、移动版、企业版,每个版本有一个软件开发包。Java基本版本叫Java 2标准版(Java 2 Standard Edition,J2SE),它包含建立Java应用程序或者是Applet所需的应用程序编程接口(API)。Java 2移动版(The Java 2 Mobile Edition,J2ME)包含创建无线Java应用程序的API。还有Java 2企业版(The Java 2 Enterprise,J2EE)是J2SE的增强版本,包含建立多层架构应用程序API。 Java语言是由C++语言发展起而来的,是一种彻底的面向对象的程序设计语言。作为一种纯面向对象的程序设计语言,它非常适合大型软件的开发。Java 语言去掉了C++语言的一些容易引起错误的特性。Java语言的特点有:面向对象、跨平台、安全性、多线程和图形功能强。

常用机械制图手工绘图工具及使用技巧

常用机械制图手工绘图工具及使用 技巧 熟练掌握常用的绘图工具使用技巧,对于提高手工绘图的质量和速率有重要意义。 —、常用绘图工具 (1)(图板)画图时,需将图纸平铺在图纸上,所以,图板的表面必须平整、光洁、且富有弹性。图板 的左侧边称为导边,必须平直。常用的图板规格有0号、1号和二号三种。 (2)丁字尺丁字尺主要用于画水平线,它由尺头和尺身组成。尺头和尺身的连接处必须牢固,尺头的 内侧边与尺身的上边(称为工作边)必须垂直。使用时,用左手扶住尺头,将尺头的内侧边紧贴图板的 导边,上下移动丁字尺,自左向右可画出一系列不同位置的水平线,如图1–18a所示。 (3)三角板三角板有45°-90°角和30°-60°-90°角的各一块。将一块三角板与丁字尺配合使用,自下而上 可画出一系列不同位置的直线,如图1-18b所示;还可画与水平线成特殊角度如30°、45°、60°的倾斜线,如图1-18c所示将两快三角板与丁字尺配合使用,可画出与水平线成15°、75°的倾斜线,如图2所示。两块三角板互相配合使用,可任画已知直线的水平线或垂直线,如图3所示。 图1用丁字尺和三角板画线 图2画15度75度斜线 图3画已知直线平行线和垂直线 二、分规、比例尺 (1)分规分规是用来量取尺寸、截取线段、等分线段的工具。分规的两腿端部有钢针,当两腿合龙时, 两针尖应重合于一点,如图4所示。图5所示为用分规在比例尺上量取尺寸(图5a),然后在线上连续截取等长线段(图5b)的方法若欲将图5c所示的AB线段四等分,可先任凭自测估计,将分规的两针 尖开到约为AB/4进行试分,如有剩余(或不足)时,再将针尖间的距离张大(或缩小)e/4,e为剩余或不足量,再进行试分,直到满意为止。用试分法也可等分圆或圆弧。 (2)比例尺比例尺的三个棱面上有六种不同比例的刻度,如1:100、1:200等,可用于量取不同比例的 尺寸。 图5分规画法 三、圆规圆规是用来画圆或圆弧的工具。圆规固定腿上的钢针具有两种不同形状的尖端:带台阶的尖端是画圆货圆弧时定心用的;带锥形的尖端可作分规使用。活动腿上有肘形关节,可随时装换铅芯插脚、 鸭嘴脚及作分规用的锥形钢针插脚,如图6所示。 图6圆规及附件 画圆或圆弧时,要注意调整钢针在固定腿上的位置,使两腿在合龙时针尖比铅芯稍长些,以便将针尖全部扎入内,如图7a所示;按顺时针方向转动圆规,并稍向前倾斜,此时,要保证针尖和笔尖均垂直纸 面,如图7b所示;画大圆时,可接上延长杆后使用,如图7c所示。 图7圆规用法 四、曲线板曲线板是绘制非圆曲线的常用工具。画线时,先徒手将各点轻轻地连成曲线,如图8a所示;然后在曲线板上选取曲率相当的部分,分几段逐次将各点连成曲线,但每段都不要全部描完,至少留出后两点间的一小段,使之与下段吻合,以保证曲线的光滑连接,如图8b所示。 图8非圆曲线的描绘 五、铅笔(1)铅笔的型号及应用绘图铅笔分软与硬两种型号,字母“B”表示软铅笔,字母“H”表示硬铅芯。“B” 之前的数值越大,表示铅芯越硬。 之前的数值越大,表示铅芯越软;“H” 字母“HB”表示软硬适中的铅芯。 图9修磨铅笔的方法

相关文档
最新文档