将图像绘制到 4 个不同的点

Drawing images to 4 different points

我在 Path2D 中画了一个四边形,我希望上面有一个图像。更具体地说,我正在尝试将我选择的图像绘制到四边形上的 4 个不同点。在我的例子中,它是一个平行四边形。我不希望图像越过平行四边形。查看我要说的内容的更好方法是查看下面的屏幕截图。

我想要转换图像以适合绿色区域。未剪裁。

我希望将图像固定在绿色平行四边形上。然而。我不希望图像进入蓝色平行四边形或白色 space 敌人。

到目前为止我已经试过了

谢谢。我是 java 的新手,请尽量宽容一些?

一种方法是:

  1. 创建一个单独的 BufferedImage。
  2. 对新图像应用变换。
  3. 将您的图像绘制到新图像上。
  4. 将绿色区域的Shape对象用作主绘图区的剪辑
  5. 将转换后的图像绘制到主绘图区。

好久没做变形了。您可能必须先设置变换,然后再绘制图像。 必须先进行变换。

public void paintComponent(Graphics g) {
    Graphics2D g2 = (Graphics2D)g;
    g2.transform(AffineTransform.getShearInstance(1.0, 0));
    g2.drawImage(image, 0, 0, this);
}

这是一个简单的示例,说明转换是如何工作的。您将不得不花一些时间来弄清楚您需要什么值才能使其工作,或者您是否需要自己手动创建一个转换矩阵。