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

时间:2016-06-14 19:05:58

标签: java image graphics2d

我在Path2D中绘制了一个四边形,我希望它上面有一个图像。更具体地说,我试图将我选择的图像绘制到四边形上的4个不同点。就我而言,它是一个平行四边形。我不希望图像超过paralellogram。看看我想说的更好的方法是看下面的截图。

我希望将图像转换为适合绿色区域。没有剪辑。

screenshot

我想将图像固定在绿色的paralellogram上。然而。我不希望图像进入蓝色的paralellogram,或者重要的白色空间。

到目前为止,我已经尝试了

  • 研究将图像直接放置到Path2D.Double()个对象上的方法。没有答案
  • 旋转图像以适合paralellogram。没工作。
  • 在java中使用AffineTransform。别搞定; - ;

感谢。我是java的新手,所以试着宽容吗?

1 个答案:

答案 0 :(得分:2)

一种方法是:

  1. 创建一个单独的BufferedImage。
  2. 将变换应用于新图像。
  3. 将图像绘制到新图像。
  4. 将绿色区域的Shape对象用作主绘图区域中的剪辑
  5. 将变换后的图像绘制到主绘图区域。
  6. 自从我完成转换以来已经有一段时间了。您可能必须先设置转换,然后再绘制图像。转换必须先行。

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

    以下是转换如何工作的简单示例。您将不得不花费一些时间来确定使其工作所需的值,或者您是否需要自己手动创建转换矩阵。