2016-07-04 69 views
0

我想要顯示必須快速更新(約30 fps)的圖像(在JPanel中)。我也想保持儘可能低的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); 
} 

我的主要表現conc恩關於paint()方法。我想知道在我全面實施這項技術之前是否還有更有效的方法來做到這一點。

+1

考慮'TexturePaint',看到[這裏](http://stackoverflow.com/a/16880714/230513)和[這裏](http://stackoverflow.com/a/24746585/230513)。 – trashgod

+1

paint:「Swing程序應該重寫'paintComponent()'而不是重載'paint()'。」 - [* AWT和Swing中的繪畫:繪製方法*](http://www.oracle.com/technetwork/)的Java /繪畫140037.html#回調)。 – trashgod

回答

0

你可以嘗試使用擺動timer的調用刷新方法(JFrame.repaint())每30millisec