【发布时间】:2017-09-20 20:23:53
【问题描述】:
重绘脏区是否只会提高性能?
如果答案是肯定的,怎么办? 本来我用 repaint() 来调用paintComponent(Graphics);但是,最近我知道 repaint() 实际上是 repaint(0,0,width,height),它每次都会重新绘制所有内容。如果我使用带参数的 repaint() 来指定脏区,它将以什么方式将这些数据传递给paintComponent(Graphics)?
【问题讨论】:
-
“重绘脏区是否只会提高性能?”除非您的代码经过优化以使用它。除非您检查当前的
clip边界并且只更新其中出现的内容,否则它几乎没有提供性能改进 - 因为在一天结束时,Java 仍然需要将整个生成的位图绘制到屏幕上- 也许看看Painting in AWT and Swing,其中有关于该主题的讨论