当使用Graphics2D
对象时,找出目标缓冲区的哪个部分需要重绘的正确方法是什么,或者,如果需要重绘整个缓冲区,则目标缓冲区的维度是什么是
目标缓冲区可以是BufferedImage
, AWT 组件或打印时使用的虚拟设备。对于某些操作,例如用图案平铺背景,有必要知道哪些区域需要绘制,即使没有优化重新绘制的意图。
我尝试使用Graphics.getClipBounds()
,但有时会返回null
。
我假设有一些方法Rectangle2D getInvaidRegion()
或Rectangle2D getDestinationBufferSize()
答案 0 :(得分:1)
在Swing中,可以通过几种不同的方式重新绘制。
最简单的方法是覆盖paintComponent
并只绘制所有内容,为您处理边框和子组件。
下一个最复杂的是覆盖paint
。你现在需要处理边框和子组件。
最后你可以覆盖paintImmediately
:
这是肮脏的区域,但对你来说很少。