调用 repaint() 而不丢失以前的图形



我正在制作一个小程序,该程序需要以前的图形才能保持"放置"和可见,即使在重绘导致可变位置更改之后也是如此。

    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);
}

缓冲映像为以前的绘制操作提供持久性。

相关内容

  • 没有找到相关文章