【发布时间】:2012-01-13 15:57:07
【问题描述】:
我需要在给定的四边形内绘制一个 BufferedImage。 我想这样做:
我希望猫被变形以绘制在四边形内。
Graphics 对象有不同的方法来绘制图像,但只能沿 X 和 Y 轴拉伸它们(参见Graphics.drawImage 方法)。
我梦想的是一种方法Graphics.drawImage(),我在其中指定了4个四边形点的坐标。有没有简单的方法可以做到这一点?
【问题讨论】:
我需要在给定的四边形内绘制一个 BufferedImage。 我想这样做:
我希望猫被变形以绘制在四边形内。
Graphics 对象有不同的方法来绘制图像,但只能沿 X 和 Y 轴拉伸它们(参见Graphics.drawImage 方法)。
我梦想的是一种方法Graphics.drawImage(),我在其中指定了4个四边形点的坐标。有没有简单的方法可以做到这一点?
【问题讨论】:
我不知道有什么简单的方法可以用标准的 java 包做到这一点。您当然可以实现自己的双线性或透视变换来进行四角图像变形,但谁愿意做所有这些工作。
我认为最好的办法是研究 Java Advanced Imaging API (javax.media.JAI)。这是一篇讨论使用 JAI 进行透视变换的文章:http://java.sun.com/products/java-media/jai/forDevelopers/jai1_0_1guide-unc/Geom-image-manip.doc.html#55959
【讨论】:
您可以在此处的 https://github.com/hfossli/AGGeometryKit/ 中找到如何在 Objective-c 中执行此操作的代码。我确定可以移植到java。
【讨论】: