我不太確定如何說明這一點,請耐心等待。java + Swing:矩形或其他「精靈」的高效疊加
我有兩個JPanel
s在一個容器JPanel
與OverlayLayout
。容器中的JPanel
s覆蓋paint(Graphics)
。
底部JPanel
是不透明的,並繪製一些相當複雜的圖形,因此需要「很長」的時間(10s或100s毫秒)來呈現。
頂部JPanel
是透明的,只是繪製一個矩形或行或基於鼠標輸入簡單的形狀,所以它的真快。
有沒有辦法設置,所以當我改變上面板的簡單形狀,它不重繪底部面板?(例如,它以某種方式緩存底部面板)
我很熟悉w /像bitblt,雙緩衝和異或繪圖的概念,但不知道在這裏應用什麼。
聽起來像是不錯的想法。這不是說它有很多計算,而是我繪製了數萬個點。 – 2011-05-27 00:44:30
是的,但是繪製1000點的10點會使用大量的CPU。所以將它們繪製在paint()之外的'BufferedImage'上並且僅在點列表(或者它們的座標)改變時才更新'BufferedImage',在重建'BufferedImage'之後,你只需要調用'重繪()'。 – jfpoilpret 2011-05-27 04:36:48