Я хочу показать изображение (в JPanel), которое должно быстро обновляться (около 30 кадров в секунду). Я также хочу, чтобы мое использование процессора было как можно более низким.Самый эффективный способ визуализации динамического изображения
Каждое обновление изображения будет состоять либо из:
- Перемещение блока пикселей на новое место
- Замена блока пикселов с новым блоком
Первое решение, которое было на ум было что-то вроде этого:
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(). Я хочу знать, есть ли более эффективные способы сделать это, прежде чем полностью реализовать эту технику.
Рассмотрим 'TexturePaint', видели [здесь] (http://stackoverflow.com/a/16880714/230513) и [здесь] (http://stackoverflow.com/a/24746585/230513). – trashgod
paint: «Swing-программы должны переопределять' paintComponent() 'вместо переопределения' paint() '." - [* Живопись в AWT и Swing: методы Paint *) (http://www.oracle.com/technetwork/ Java/живопись-140037.html # обратных вызовов). – trashgod