当使用 Graphics2D
对象时,找出目标缓冲区的哪一部分需要重绘的正确方法是什么,或者,如果需要重绘整个缓冲区,那么什么维度是目标缓冲区是什么?
目标缓冲区可以是 BufferedImage
、AWT 组件或打印时使用的虚拟设备。对于某些操作,例如用图案平铺背景,即使没有优化重绘的意图,也有必要知道需要绘制哪个区域。
我尝试使用 Graphics.getClipBounds()
,但有时会返回 null
。
我假设有一些方法类似于 Rectangle2D getInvaidRegion()
或 Rectangle2D getDestinationBufferSize()
最佳答案
在 Swing 中,有几种不同的方法可以要求您重绘。
最简单的做法是重写 paintComponent
并绘制所有内容,边框和子组件会为您处理。
下一个最复杂的是覆盖paint
。您现在需要处理边框和子组件。
最后,您有了可以覆盖的 paintImmediately
:
这是关于脏区的通知,但对您的作用很小。
关于java - 在 Swing 中重新绘制时识别 Graphics2D 的脏区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20972892/