这个是使用BufferedImage在AWT上实现的一个写字板的功能,通过记录鼠标的坐标与上次的坐标来连线实现。可以试试用这个办法去做做昨天的小弹球,看看能不能使它没那么卡
先上代码
package com.a;
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.awt.image.BufferedImage;
public class DrawImg {
Frame f=new Frame();
BufferedImage image=new BufferedImage(300,400,BufferedImage.TYPE_INT_RGB);
int prex=-1;
int prey=-1;
Graphics g=image.getGraphics();
MyCanvas drawArea=new MyCanvas();
public void init(){
drawArea.setPreferredSize(new Dimension(300,400));
g.fillRect(0, 0, 300, 400);
drawArea.addMouseMotionListener(new MouseMotionAdapter(){
public void mouseDragged(MouseEvent e){
if(prex>0&&prey>0) {
g.setColor(new Color(255,0,0));
g.drawLine(prex, prey, e.getX(), e.getY());
}
prex=e.getX();
prey=e.getY();
drawArea.repaint();
}
});
drawArea.addMouseListener(new MouseAdapter(){
public void mouseReleased(MouseEvent E){
prex=-1;
prey=-1;
}
});
f.add(drawArea);
f.setVisible(true);
f.setSize(300, 400);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new DrawImg().init();
}
class MyCanvas extends Canvas{
public void paint(Graphics g){
g.drawImage(image,0,0,null);
}
}
}
与昨天的方法对比,使用了BufferedImage,通过其getGraphics()方法来得到画图工具Graphics