我在 Path2D 中绘制了一个四边形,我希望上面有一个图像。更具体地说,我试图将我选择的图像绘制到四边形上的 4 个不同点。就我而言,它是一个平行四边形。我不希望图像超出平行四边形。了解我想说的内容的更好方法是查看下面的屏幕截图。
我希望将图像转换为适合绿色区域。未剪辑。
我希望将图像固定在绿色平行四边形上。然而。我不希望图像进入蓝色平行四边形或重要的空白区域。
到目前为止我已经尝试过
- 正在研究一种将图像直接放置到
Path2D.Double()
对象上的方法。没有答案 - 旋转图像以适合平行四边形。没用。
- 在java中使用AffineTransform。不明白;-;
谢谢。我是java新手,所以请宽容点吗?
最佳答案
一种方法是:
- 创建一个单独的 BufferedImage。
- 对新图像应用变换。
- 将您的图像绘制到新图像上。
- 使用绿色区域的 Shape 对象作为主绘图区域上的剪辑
- 将变换后的图像绘制到主绘图区域。
我已经有一段时间没有进行转换了。您可能必须先设置变换,然后再绘制图像。 变换必须先行。
public void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D)g;
g2.transform(AffineTransform.getShearInstance(1.0, 0));
g2.drawImage(image, 0, 0, this);
}
这是一个说明转换如何工作的简单示例。您将不得不花一些时间来弄清楚需要哪些值才能使其工作,或者您是否可能需要自己手动创建转换矩阵。
关于java - 将图像绘制到 4 个不同的点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37820195/