【发布时间】:2012-03-10 00:00:22
【问题描述】:
虽然我没有做一些动画或绘制非常复杂的图形。
我需要(某种)双缓冲来绘制几个图元。在应用程序中,用户输入形状的名称,后跟相关参数,然后在缓冲区上绘制该形状,然后在屏幕上绘制。
例如一个命令是RECT 100, 50, 200, 120。
为了持久性,我可以将所有命令存储在 JPanel 的列表和 public void paintComponent(Graphics g) 中,我将它们一一绘制。
但这是非常低效的,因为每次遍历列表并使用哈希映射来调用(或调度)相关的形状绘制接口。
我可以如何以及在什么类型的缓冲区上绘制?不同的方法如何利用这个缓冲区?
此外,有没有一种方便的方法可以使用缓冲区撤消以前的绘制?还是每次撤消完成时我都需要在缓冲区上重绘?
谢谢,我不想要完整的代码,但感谢相关的类名和小伪代码。
【问题讨论】:
-
您能否详细说明您的高效标准?
List<Shape>通常足以容纳数千种形状。 -
@trashgod:不应该有闪烁,而且每次切换应用程序时都绘制,不应该要求绘制paintComponent中的所有内容。
-
“不应要求绘制所有内容” 研究“过早优化”。
-
@AndrewThompson:抱歉,我上次(绘制面包板)的经历不是很好。所以我有点担心。
-
“所以我有点担心。”你应该发一点SSCCE。
标签: java swing buffer jpanel graphics2d