将图像绘制到 4 个不同的点
Drawing images to 4 different points
我在 Path2D 中画了一个四边形,我希望上面有一个图像。更具体地说,我正在尝试将我选择的图像绘制到四边形上的 4 个不同点。在我的例子中,它是一个平行四边形。我不希望图像越过平行四边形。查看我要说的内容的更好方法是查看下面的屏幕截图。
我想要转换图像以适合绿色区域。未剪裁。
我希望将图像固定在绿色平行四边形上。然而。我不希望图像进入蓝色平行四边形或白色 space 敌人。
到目前为止我已经试过了
- 正在研究一种将图像直接放置到
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);
}
这是一个简单的示例,说明转换是如何工作的。您将不得不花一些时间来弄清楚您需要什么值才能使其工作,或者您是否需要自己手动创建一个转换矩阵。
我在 Path2D 中画了一个四边形,我希望上面有一个图像。更具体地说,我正在尝试将我选择的图像绘制到四边形上的 4 个不同点。在我的例子中,它是一个平行四边形。我不希望图像越过平行四边形。查看我要说的内容的更好方法是查看下面的屏幕截图。
我想要转换图像以适合绿色区域。未剪裁。
我希望将图像固定在绿色平行四边形上。然而。我不希望图像进入蓝色平行四边形或白色 space 敌人。
到目前为止我已经试过了
- 正在研究一种将图像直接放置到
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);
}
这是一个简单的示例,说明转换是如何工作的。您将不得不花一些时间来弄清楚您需要什么值才能使其工作,或者您是否需要自己手动创建一个转换矩阵。