【问题标题】:Refresh BufferedImage刷新缓冲图像
【发布时间】:2014-06-03 11:09:26
【问题描述】:

我想在 JFrame 中创建一个简单的画笔。为此,我创建了一个 BufferedImage,当鼠标被拖动时,我刚刚重新绘制它并设置为图像更改。

问题是,如果我拖动鼠标太快,则不会绘制所有点。 它看起来像虚线。

这是我更新图像的代码:

public void mouseDragged(MouseEvent evt) 
{   
    int x = evt.getX();
    int y = evt.getY();

    if(eraser == false)   
        this.Dice(x, y);
    else
        this.Eraser(x, y);

    g = (Graphics2D) this.getGraphics();
    g.drawImage(image, positionX, positionY, null);
    g.dispose();
}

DiceEraser 方法中,我对 图像 进行了更改(我设置了像素)。 我真的不知道如何修复它。

感谢您的帮助。

【问题讨论】:

  • 不要使用getGraphics,覆盖paintComponent并在那里绘制图像,然后调用repaint

标签: java refresh draw bufferedimage mouse-listeners


【解决方案1】:

我认为这是由于 Swing “缓冲”了 mouseDragged 事件(即,如果鼠标每次中断移动超过一个像素,它只会被调用一次)。 您可以尝试存储最新报告的鼠标位置,而不是为像素调用一次this.Dice()/this.Eraser(),而是为起始(最后)位置和当前鼠标事件位置之间的所有内容调用它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-11
    • 1970-01-01
    • 1970-01-01
    • 2013-04-14
    • 2015-08-10
    • 1970-01-01
    • 2011-11-28
    相关资源
    最近更新 更多