我正在制作'绘图'应用程序。整个“绘图”始终存储在BufferedImage
对象中(使用常量更新循环)。我们称之为drawingArea
。
我正在使用BufferedImage
类'getSubimage()
方法实现选择工具。用户使用此工具选择图纸的某个区域,并将其粘贴到图纸上的任何位置。
用户通过拖动鼠标选择区域,当他/她释放鼠标时,所选区域存储在BufferedImage
中。这是通过调用drawingArea
的{{1}}方法,并将返回的值放在getSubimage( /* properties of the selected rectangular area */ )
内(让我们称之为BufferedImage
)来完成的。
此操作仅完成(也就是说, selectedArea
内有值后,没有任何代码可以为selectedArea
<分配任何新内容/强>)。
然而,我发现(并且肯定),selectedArea
中存储的值确实发生了变化 - 它存储的图像会更新!
含义:如果用户选择一个区域(此时保存了该区域副本的图像),则在该区域内绘制 ,并且然后粘贴图片 - 粘贴的图片将是之后图纸,而不是之前。
这怎么可能? selectedArea
是否会返回getSubimage()
更新时更新的BufferedImage
? (又名它复制的区域)?
这看起来很愚蠢,但在这一点上,我认为这是唯一的选择。
答案 0 :(得分:4)
如有疑问,请查看文档:
返回由指定矩形区域定义的子图像。 返回的BufferedImage与原始映像共享相同的数据数组。
换句话说,是的,原始图像或子图像中的修改在另一个图像中可见。