我不太确定如何表达这一点,所以请耐心等待。
我有两个JPanel
s 在一个容器中JPanel
与OverlayLayout
. Both JPanel
容器中的 s 覆盖paint(Graphics).
底端JPanel
是不透明的并且绘制了一些相当复杂的图形,因此需要“很长”的时间(10或100毫秒)来渲染。
The top JPanel
是透明的,仅根据鼠标输入绘制矩形、线条或简单形状,因此速度非常快。
有没有办法进行设置,以便当我更改上部面板中的简单形状时,它不会重新绘制底部面板?(例如,它以某种方式缓存底部面板)
我对 bitblt、双缓冲和异或绘图等概念有点熟悉,但不太确定在这里应用什么。
你最好使用一个JComponent
并创建一个BufferedImage
存储底部图像。当。。。的时候paintComponent
操作发生在JComponent
,您只需将底部图像复制并使用Graphics
对象在此基础上进行任何进一步的绘制(从存储的状态)。应该还是比较有效率的。
您需要对底部进行复杂的绘制操作BufferedImage
在另一条线索中,正如另一张海报提到的那样(无意中忽略了这一点,抱歉:))。但是,您不想引起此图像的争用,因此您必须存储额外的BufferedImage
为此,在绘制操作完成时将其同步传输到另一个图像。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)