我刚开始使用java 2d图形应用程序,在我的研究重绘是重绘我们的图形浪费了大量资源。 但是我想知道什么重绘是什么,有效以及如何有效地使用它,为我画布上的许多可移动动态对象安全快速地进行线程化?
答案 0 :(得分:7)
我首先阅读Performing Custom Painting和Painting in AWT and Swing
repaint
向RepaintManager
发出请求,要求绘制部分或全部组件。 RepaintManager
将决定绘制的内容和绘制内容,可能会将重绘请求合并到尽可能少的更新中(因此重复调用repaint
实际上可能会减慢绘制过程。)
RepaintManager
然后将paint
事件推送到事件调度线程。这确保了在EDT的上下文中处理paint事件。
在Swing中进行绘画时,有许多可能的解决方案可以提高速度和资源管理。
您可以考虑实施自己的双缓冲策略,将更新绘制到屏幕外缓冲区,准备好后,切换到活动缓冲区,这将被绘制。
这意味着绘画很快,因为所有工作都已完成(可能是在后台线程中)。
例如......
你也可以看看Passive vs. Active Rendering,但我非常肯定你知道自己在做些什么......