最有效的渲染动态图像的方法

时间:2016-07-04 22:10:44

标签: java swing bufferedimage

我想要显示一个必须快速更新的图像(在JPanel中)(大约30 fps)。我还希望尽可能降低CPU使用率。

每次图像更新都包含:

  • 将像素块移动到新位置
  • 用新块替换像素块

首先想到的解决方案是这样的:

private BufferedImage screen;

public void runBlockUpdate(int x, int y, int pieceWidth, int pieceHeight byte[] piece){
    ImageIcon imgPiece = new ImageIcon(piece);
    Graphics2D g = screen.createGraphics();
    g.drawImage(imgPiece.getImage(), x, y, pieceWidth, pieceHeight, null);
    repaint();
}

@Override
public void paintComponent(Graphics g) {
    g.drawImage(screen, 0, 0, (int) (screenRect.width * screenScale), (int) (screenRect.height * screenScale), this);
}

我的主要性能问题涉及paint()方法。在完全实现这项技术之前,我想知道是否有更有效的方法。

1 个答案:

答案 0 :(得分:0)

您可以尝试使用swing timer调用刷新方法(JFrame.repaint())每30millisec