如何在屏幕上呈现图像?

时间:2014-08-14 07:08:43

标签: java swing buffer render draw

这可能是一个奇怪的问题,但是考虑如何将图像投影到屏幕上的正确方法是什么? 如果我们已经在屏幕上显示了一个图像,并且我们将另一个图像渲染到屏幕上,那么新图像会在旧图像上显示,从而使旧图像不再可见。或者它是否落后于旧的那个,从而使新的一个不可见,直到我们清除旧的屏幕。 我曾经认为新的图像在旧的图像之上,但是,在使用缓冲区一点点(即BufferedImage和BufferedStrategy)后,我开始认为这不是正确的方式。 那么请有人澄清这件事 感谢

2 个答案:

答案 0 :(得分:2)

一般来说,你可以把它想象成画家画布。每当你画出新的东西时,你都会画在那里的顶部。

在处理缓冲区时,过程是一样的,但是知道你正在处理最后绘制到THAT缓冲区的内容。

所以如果你有三个缓冲区,[1]在屏幕上,你正在绘画[2]被推到屏幕上,它没有[1]的内容,但是有什么画的到[2]最后画的时候......

所以你有[1] [2] [3],然后你有[2] [3] [1],然后是[3] [1] [2]。每个缓冲区至少会有两个喷涂周期过时。

这就是为什么每次清除缓冲区并从头开始重建它们很重要,因为你不知道上次绘制缓冲区

答案 1 :(得分:0)

这取决于你画画的内容和方式。

屏幕"刷新"本身以一定的速度,(例如每秒60次)。此时,无论图形卡的内存是什么,都会被绘制出来。

虽然有许多不同的方式将内容放入显卡内存中,但它们的行为也不同。

BufferedImage不会直接进入屏幕。取而代之的是复制"进入显卡并用于绘制到屏幕。

Swing隐藏了所有远离你的东西 - 你只需要担心重画,它将处理其余部分。对此的实际处理来自您使用的Control,例如JButtonJPanel等。