【问题标题】:Repainting Frame erases previously drawn shape重新绘制框架会擦除先前绘制的形状
【发布时间】:2015-06-19 00:28:50
【问题描述】:

我目前正在使用 Java 进行绘画,并且遇到了 repaint() 擦除先前绘制的形状的问题。这是我的问题的一个例子:

public void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.setColor(Color.LIGHT_GRAY);

        click.paintPiece(g);
    }

public void paintPiece(Graphics g) {
        int x = (getMouseX())*70 + 10;
        int y = mover.getRow()*70 + 10;
        g.fillOval(x, y, 50, 50);
    }

每次单击鼠标时,paintPiece() 方法都会在 paintComponent() 方法中调用。我遇到的问题是,在创建新椭圆时,先前绘制的椭圆被擦除了。还需要注意的是,每次单击鼠标时,我都会重新绘制窗口。如何在不擦除之前绘制的椭圆的情况下绘制新的椭圆?

【问题讨论】:

    标签: java swing paintcomponent


    【解决方案1】:
    • 解决方案 1:创建一个 ArrayList<Ellipse2D> 并在鼠标单击时用新项目填充它。在您的 paintComponent(...) 方法中,遍历列表,绘制每个形状。
    • 解决方案 2:使用通过在 BufferedImage 上调用 getGraphics() 获得的 Graphics 对象将椭圆绘制到 BufferedImage 上,然后在您的 paintComponent 方法中绘制该 BufferedImage。不要忘记在使用完 BI 的 Graphics 对象后对其进行处理。

    【讨论】:

      猜你喜欢
      • 2016-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-13
      • 2013-04-22
      相关资源
      最近更新 更多