这被认为是“双缓冲”吗?

时间:2014-02-16 17:40:52

标签: performance drawing doublebuffered

我正在制作一个简单的绘图程序,用户可以使用鼠标在屏幕上绘制线条。

当运行程序时,当绘图区域填充越来越多的行时,它最终会变得非常“滞后”。

我在SO中询问过这个问题并且还对谷歌进行了一些研究。我明白“双缓冲”可能是解决问题的方法。

我想解释一下我的程序,解释我在这个程序中实现双缓冲的想法,然后提出两个问题。

我的计划:

程序在每秒运行25次的更新循环中运行。

每个更新周期,程序会检查鼠标是否被按下。

如果按下:创建一个新的Line对象,由 更新周期中鼠标 的点组成, 当前更新周期中鼠标 的点。 这段非常短的Line已添加到名为List的{​​{1}}。

绘图区域(lines)的每个更新周期都重新绘制。每次重新绘制时,它都会在JPanel内绘制所有内容。

用户绘制的越多,程序在每个更新周期中显示的越多,就会导致滞后。

我如何考虑实施双缓冲:

我不会在每个更新周期中绘制所有行,而是执行此操作:

每个更新循环,我只将用户创建的新行 - 绘制到lines

每个更新周期,绘图区域都会重新绘制,但只会显示此BufferedImage

我的问题:

  1. 这被认为是“双缓冲”吗?

  2. 我是否还需要重新映射BufferedImage每个更新周期?如果答案为“是”,则在这种情况下取​​消双缓冲的整个点 - 这是为了使程序不断地在大列表中绘制每个对象。

  3. 由于

0 个答案:

没有答案