我不太确定如何说明这一点,请耐心等待。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