gpt4 book ai didi

java+Swing : efficient overlay of rectangle or other "sprite"

转载 作者:行者123 更新时间:2023-12-05 01:05:14 25 4
gpt4 key购买 nike

我不太确定该如何表达,所以请耐心等待。

我在容器 JPanel 中有两个 JPanel 和一个 OverlayLayout。容器中的两个 JPanel 都会覆盖 paint(Graphics) .

底部的 JPanel 是不透明的,绘制了一些相当复杂的图形,因此需要“很长”的时间(10 或 100 毫秒)来呈现。

顶部的 JPanel 是透明的,只是根据鼠标输入绘制一个矩形或直线或简单的形状,所以速度非常快。

有没有一种方法可以设置当我更改上面板中的简单形状时,它不会重绘底部面板?(例如它以某种方式缓存底部面板) p>

我对 bitblt、双缓冲和 XOR 绘图等概念有点熟悉,但不确定在此处应用什么。

最佳答案

最好使用单个 JComponent 并创建一个 BufferedImage 来存储底部图像。当 paintComponent 操作发生在 JComponent 上时,您只需 blit 底部图像并使用 Graphics 对象在其上做任何进一步的绘制(从存储状态)。应该相当有效。

您需要在另一个线程中为底部的 BufferedImage 执行复杂的绘制操作,正如其他张贴者所提到的(不小心忽略了这一点,抱歉 :))。但是,您不想引起对该图像的争用,因此您必须为此存储一个额外的 BufferedImage,并在绘制操作完成的那一刻将它同步到另一个图像.

关于java+Swing : efficient overlay of rectangle or other "sprite",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6144232/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com