【发布时间】:2014-01-07 22:05:42
【问题描述】:
当使用Graphics2D 对象时,找出目标缓冲区的哪一部分需要重绘的正确方法是什么,或者,如果需要重绘整个缓冲区,目标缓冲区的尺寸是多少?
目标缓冲区可以是BufferedImage、AWT 组件或打印时使用的虚拟设备。对于某些操作,例如用图案平铺背景,即使没有优化重绘的意图,也有必要知道需要绘制哪个区域。
我尝试使用Graphics.getClipBounds(),但有时会返回null。
我假设有一些类似于Rectangle2D getInvaidRegion() 或Rectangle2D getDestinationBufferSize() 的方法
【问题讨论】:
-
我不明白你的意思?为什么需要重绘哪个部分?
-
@TimB 我能找到的最接近的是 .NET 框架中的等效项:PaintEventArgs.ClipRectangle。像往常一样,描述是不存在的,但它的作用如下:事件的这个属性总是告诉你需要重绘后备缓冲区的哪一部分。这可能是整个缓冲区的区域,也可能只是其中的一部分,前提是只有部分缓冲区已失效。
-
所以这是 Swing 重绘请求进来的时候,所以你知道要重绘的脏区吗?
-
@TimB 是的,这是一个有用的实例。但我正在寻找一种解决方案,该解决方案在需要重绘整个组件或绘制到 Swing 组件以外的东西时也可以使用。
-
@TimB 现在我才看到您更改了问题的标题和其他人的标签,完全改变了上下文!我对仅在绘制 Swing 组件时的解决方案不感兴趣。我在问 Java 图形 API 是否有一种通用的方法来定义需要实际绘制的区域。
标签: java swing awt graphics2d