BufferedImage的getSubimage()究竟是做什么的?

时间:2014-03-02 21:49:06

标签: java drawing bufferedimage

我正在制作'绘图'应用程序。整个“绘图”始终存储在BufferedImage对象中(使用常量更新循环)。我们称之为drawingArea

我正在使用BufferedImage类'getSubimage()方法实现选择工具。用户使用此工具选择图纸的某个区域,并将其粘贴到图纸上的任何位置。

用户通过拖动鼠标选择区域,当他/她释放鼠标时,所选区域存储在BufferedImage中。这是通过调用drawingArea的{​​{1}}方法,并将返回的值放在getSubimage( /* properties of the selected rectangular area */ )内(让我们称之为BufferedImage)来完成的。

此操作仅完成(也就是说, selectedArea内有值后,没有任何代码可以为selectedArea <分配任何新内容/强>)。

然而,我发现(并且肯定),selectedArea中存储的值确实发生了变化 - 它存储的图像会更新!

含义:如果用户选择一个区域(此时保存了该区域副本的图像),在该区域内绘制 ,并且然后粘贴图片 - 粘贴的图片将是之后图纸,而不是之前。

这怎么可能? selectedArea是否会返回getSubimage()更新时更新的BufferedImage? (又名它复制的区域)? 这看起来很愚蠢,但在这一点上,我认为这是唯一的选择。

1 个答案:

答案 0 :(得分:4)

如有疑问,请查看文档:

  

返回由指定矩形区域定义的子图像。 返回的BufferedImage与原始映像共享相同的数据数组。

换句话说,是的,原始图像或子图像中的修改在另一个图像中可见。