我制作了一个小程序,需要先前的图形保持“放置”并且可见,即使在重新绘制导致变量位置发生变化之后也是如此。
public void paint(Graphics g){
super.paint(g);
g.setColor(Color.red);
g.fillOval(mouseLocX,mouseLocY,30,30);
}
这是我在paint类中的全部内容,我想更改mouseLocX和mouseLocY值,并在没有前一个位置的情况下调用repaint。我以前做过这个,大多数人都想要相反,但我忘了怎么做。我使用mouseDragged();
从MouseMotionListener调用重绘答案 0 :(得分:1)
如果你想保留已经绘制的内容,以便在鼠标移动时获得红色椭圆形而不是单个红色椭圆形,那么就不应该直接在paint()提供的Graphics对象上绘画。相反,使用BufferedImage来存储您的状态。然后将BufferedImage渲染到paint()提供的Graphic上。
private BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
public void paint(Graphics g) {
super.paint(g);
Graphics imageGraphics = image.getGraphics();
imageGraphics.setColor(Color.red);
imageGraphics.fillOval(mouseLocX,mouseLocY,30,30);
g.drawImage(image, 0, 0, null);
}
BufferedImage为先前的绘制操作提供持久性。