一个简单的Java画布工具

1、首先创建一一个项目,

2、建一个com.mr.draw.的包

3、这个包里有两个类:DrawPictureFrame 和DrawPictureCanvas

DrawPictureFrame类

package com.mr.draw;

import java.awt.*;
import java.awt.event.*;
import java.awt.event.MouseMotionAdapter;
import java.awt.image.BufferedImage;


import javax.swing.*;


public class DrawPictureFrame extends JFrame{ //继承JFrame类
BufferedImage image=new BufferedImage(570,390,BufferedImage.TYPE_INT_BGR);/ /处理位图,相当于一个画布的模板
Graphics gs=image.getGraphics(); //获取画布对象
Graphics2D g=(Graphics2D)gs ;//将画布对象转化为二维的
DrawPictureCanvas canvas =new awPictureCanvas(); //创建画布对象
Color foreColor =Color.BLACK;// 定义前景色,不然画布无法显示所画内容
Color backgroundColor=Color.WHITE; //显示的背景色
int x=-1; //鼠标的上次横坐标位置
int y=-1; //鼠标的上次纵坐标位置
boolean rubber=false; //橡皮定位变量

public void init(){//初始化方法
g.setColor(backgroundColor);/ /设置之画布的背景色
g.fillRect(0, 0, 570,450);/ /画布在窗口里的大小
g.setColor(foreColor);/ /绘制后前的颜色,
canvas.setImage(image); //将位图放在画布里
getContentPane().add(canvas);/ /取得画布放在窗口的默认中部位置
addListener(); //调用监听器
}

public DrawPictureFrame(){/ /画布的窗口
setResizable(false); //设置窗体大小不变
setTitle("画图程序"); //窗口的名称
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //可以关闭窗口
setBounds(500, 100, 574, 460); //窗口的坐标和大小

init();//调用init()方法


}

public static void main(String[] args){ //主方法
DrawPictureFrame jf=new DrawPictureFrame(); //创建窗口
jf.setVisible(true);/ /可见状态

}
private void addListener(){
canvas.addMouseMotionListener(new MouseMotionAdapter(){/ /添加鼠标移动时间
public void mouseDragged(final MouseEvent e){ //当鼠标拖拽时
if(x>0&&y>0){ //鼠标的坐标发生移动
if(rubber) //true
{
g.setColor(backgroundColor);/ /覆盖掉内容
g.fillRect(x, y, 10, 10); //矩形的橡皮擦
}else{
g.drawLine(x, y, e.getX(), e.getY());/ /在鼠标滑动的地方画直线
}

}
x=e.getX();/ /上一次绘制点的坐标
y=e.getY(); //上一次绘制点的坐标
canvas.repaint() ;//更新画布
}
});
canvas.addMouseListener(new MouseAdapter(){/ /添加事件监听
public void mouseReleased(final MouseEvent e){ //鼠标释放时的监听
x=-1; //恢复最初的横坐标
y=-1;/ /恢复最初的纵坐标
}
});
}

}

DrawPictureCanvas类

package com.mr.draw;


import java.awt.*;
import javax.swing.*;


public class DrawPictureCanvas extends Canvas{//继承画布类
private Image image=null;//创建一个画布中的对象


public Image getImage() {
return image;//返回对象
}


public void setImage(Image image) {
this.image = image;
}//构造方法初始化对象
public void paint(Graphics g){
g.drawImage(image,0,0,null);//在画布中绘制图像
}

public void update(Graphics g){
paint(g);//调用paint方法
}



}

以下是效果图和项目图




猜你喜欢

转载自blog.csdn.net/liqz666/article/details/80007422