我正在制作一个小程序,该程序需要以前的图形才能保持"放置"和可见,即使在重绘导致可变位置更改之后也是如此。
public void paint(Graphics g){
super.paint(g);
g.setColor(Color.red);
g.fillOval(mouseLocX,mouseLocY,30,30);
}
这就是我在 paint 类中的全部内容,我想更改 mouseLocX 和 mouseLocY 值,并在没有之前位置的情况下调用重绘。我以前做过这个,大多数人都想要相反,但我忘记了如何做。我使用 mouseDragged() 从 MouseMotionListener 调用重绘;
如果要保留已绘制的内容,以便在鼠标移动时获得红色椭圆形的轨迹而不是单个红色椭圆形,则不应直接在paint()提供的图形对象上绘制。 相反,请使用缓冲映像来存储状态。 然后将缓冲图像渲染到 paint() 提供的图形上。
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);
}
缓冲映像为以前的绘制操作提供持久性。