如何使用java立即调整大小并绘制图像?

时间:2015-02-26 14:15:26

标签: java performance swing image-resizing

我使用BufferedImage的getScaledInstance()方法和JLayeredPane的repaint()方法来实时调整大小并在屏幕上绘制图像。但我看过一篇文章说repaint()方法不合适,因为它不会立即刷新layeredPane。然而,没有其他方法可以描述。

我还构建了一个远程应用程序,每当检测到平移手势时它都会发送一条消息。当java程序收到消息时,它会调用我写的方法。

这是我正在使用的代码。我可以使用什么而不是repaint()方法?

public void resizeImage(float percentage) { 
    if (percentage > 0) {
        int newWidth = (int)(originalImage.getWidth() * (percentage / 100));
        int newHeight = (int)(originalImage.getHeight() * (percentage / 100));

        Image tmp = originalImage.getScaledInstance(newWidth, newHeight, Image.SCALE_SMOOTH);
        BufferedImage dimg = new BufferedImage(newWidth, newHeight, BufferedImage.TYPE_INT_ARGB);

        Graphics2D g2d = dimg.createGraphics();
        g2d.drawImage(tmp, 0, 0, null);
        g2d.dispose();

        imageForDisplay = dimg;
        layeredPane.repaint();
    }
}

提前致谢!

0 个答案:

没有答案