Jos*_*Fox 5 java graphics image graphics2d image-clipping
我想将一个图像的一部分复制到另一个较小的图像中:换句话说,复制一个子矩形.
我有一个Graphics2D对象的源代码,我可以为目标做一个,我知道targetGraphics2D.drawImage(Image img,....),但是如何从sourceGraphics2D获取img?
答案(根据aioobe):源需要是图像而不是Graphics2D.
Image.subImage()是获取源的相关部分的方法.
首先,关于 Andreas_D 答案的一些注释如下:
他的代码依赖于sun.java2d.SunGraphics2D一个内部且未记录的 OpenJDK 类。这意味着,虽然它可以在您的计算机上编译并运行,但如果您将代码分发给其他人,它可能会崩溃。详细讨论请参阅官方对此的声明。
该代码依靠反射来撬开内部类,这本身就是一种代码味道。
总而言之,他的方法是一个非常糟糕的实践的例子(无论是在编程风格方面还是在帮助其他程序员正确使用 API 方面)
我如何从 中获取该 img
sourceGraphics2D?
我怀疑你误解了班级的职责Graphics2D。
您可以使用该类Graphics2D来绘制某些内容。它能够在屏幕BufferedImage(如果您从缓冲图像中获取图形对象)、屏幕(如果您将其作为方法的参数paintComponent)甚至打印机上绘图。换句话说,给定一个Graphics2D物体,甚至可能不存在图像!
因此,正如您可能了解的那样,Graphics2DAPI 不提供获取底层图像的方法。(这种方法没有意义,图形对象可能会传递绘制到打印机的线条和文本!)
要获取子图像,您需要获取给定图形对象所绘制的底层图像。
| 归档时间: |
|
| 查看次数: |
11882 次 |
| 最近记录: |