gpt4 book ai didi

java - BufferedImage 的 getSubimage() 到底做了什么?

转载 作者:行者123 更新时间:2023-11-30 07:10:33 26 4
gpt4 key购买 nike

我正在开发一个“绘图”应用程序。整个“绘图”不断地存储在 BufferedImage 对象中(使用不断的更新循环)。我们称它为 drawingArea

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

用户通过拖动鼠标选择一个区域,当他/她释放鼠标时,所选区域存储在BufferedImage 中。这是通过调用 drawingAreagetSubimage(/* properties of the selected rectangular area */) 方法完成的,并将返回值放入 BufferedImage(我们称它为 selectedArea)。

此操作仅执行一次(又名,一旦selectedArea 中有一个值,就没有任何代码将任何新内容分配给选定区域).

但是,我发现(并且确信)selectedArea 中存储的值确实发生了变化 - 它存储的图像得到了更新!

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

这怎么可能? getSubimage() 是否返回一个 BufferedImage 并在其源更新时得到更新? (又名它被复制的区域)?这看起来很愚蠢,但在我看来这是唯一的选择。

最佳答案

如有疑问,请检查文档:

Returns a subimage defined by a specified rectangular region. The returned BufferedImage shares the same data array as the original image.

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

关于java - BufferedImage 的 getSubimage() 到底做了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22133993/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com