【发布时间】:2015-03-26 08:46:24
【问题描述】:
javadoc 说:
为了提高效率,程序员在使用完一个 图形对象仅当它是直接从组件创建的或 另一个 Graphics 对象。
那么在下面的代码中,我应该在返回之前调用graphics.dispose() 吗?
或者,我可以吗?
{ ...
BufferedImage result = new BufferedImage(toWidth, toHeight, BufferedImage.TYPE_INT_RGB);
java.awt.Graphics graphics=result.getGraphics();
graphics.drawImage(im.getScaledInstance(toWidth, toHeight, java.awt.Image.SCALE_SMOOTH), 0, 0, null);
return result;
}
BufferedImage result 被返回并在别处使用。
【问题讨论】:
-
由于
result及其关联的图形对象 (graphics) 在方法调用后超出范围,我会说是的。 -
Java 通过引用返回对象。那么如果他处置了图形对象,他是否可以再次将其用于返回的对象?我不知道,也许有人可以回答这个问题。
-
@Loki 如果他把它扔掉,他就不能再使用它了。
-
@Kayaman,所以他不应该在这个方法中处理它,因为他返回了 BufferedImage 并且可能想在以后使用它。对吗?
-
在这个方法中处理它,然后在返回的结果上再次调用
getGraphics()的结果是什么?