首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 雙緩衝繪圖技術消除閃爍實現拖拽圖片

     編輯:Java 相關知識

雙緩衝原理:在內存 BufferedImage 繪製完整幀,再一次性繪製到屏幕,避免直接繪製導致的閃爍與撕裂。Swing 組件預設開啟雙緩衝 (JComponent.setDoubleBuffered(true)),自定義繪圖可手動實現。

// 離屏緩衝圖像
BufferedImage offscreen = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = offscreen.createGraphics();
// 繪製背景、圖片、邊框...
g2d.drawImage(image, x, y, null);
g2d.dispose();

// paintComponent 中直接繪製緩衝圖
public void paintComponent(Graphics g) {
    super.paintComponent(g);
    if (offscreen != null) g.drawImage(offscreen, 0, 0, null);
}

// 滑鼠拖拽更新坐標並重繪
public void mouseDragged(MouseEvent e) {
    x = e.getX() - offsetX;
    y = e.getY() - offsetY;
    // 更新緩衝圖中的圖片位置
    repaint();
}

進階:使用 VolatileImage 利用顯存加速,或 BufferStrategy (全屏獨佔模式) 實現頁面翻轉。現代 Swing 應用通常依賴組件內建雙緩衝,僅在複雜場景 (遊戲循環、大量圖元) 需手動管理。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved