Java 调用repaint()而不丢失上一个图形
我正在制作一个小程序,它需要以前的图形保持“固定”和可见,即使在重新绘制导致可变位置改变之后也是如此Java 调用repaint()而不丢失上一个图形,java,graphics,mouse,paint,super,Java,Graphics,Mouse,Paint,Super,我正在制作一个小程序,它需要以前的图形保持“固定”和可见,即使在重新绘制导致可变位置改变之后也是如此 public void paint(Graphics g){ super.paint(g); g.setColor(Color.red); g.fillOval(mouseLocX,mouseLocY,30,30); } 这就是我在paint类中拥有的所有内容,我想更改mouseLocX和mouseLocY值,并调用repaint,而不必在其中设置以前的位置
public void paint(Graphics g){
super.paint(g);
g.setColor(Color.red);
g.fillOval(mouseLocX,mouseLocY,30,30);
}
这就是我在paint类中拥有的所有内容,我想更改mouseLocX和mouseLocY值,并调用repaint,而不必在其中设置以前的位置。我以前做过这件事,大多数人的想法正好相反,但我忘了怎么做了。我正在使用mouseDragged()从MouseMotionListener调用repaint 如果要保留已绘制的内容,以便在鼠标移动时获得红色椭圆的轨迹,而不是单个红色椭圆,则不应直接在paint()提供的图形对象上绘制。相反,使用BuffereImage来存储您的状态。然后将BuffereImage渲染到paint()提供的图形上
BuffereImage为以前的绘制操作提供持久性。你说的“以前的位置”是什么意思?根据您的代码片段,将绘制的唯一值是
mouseLocX
和mouseLocY
的当前值…红色…哦,这就是问题的意思?现在说得通了;)
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);
}