有什么方法可以使用 4 个点而不是 3 个点来绘制图像(透视扭曲)

StackOverflow https://stackoverflow.com/questions/38308

  •  09-06-2019
  •  | 
  •  

Graphics.DrawImage 很好地支持绘制平行四边形:

Bitmap destImage = new Bitmap(srcImage.Width, srcImage.Height);
using (Graphics gr = new Graphics.FromImage(destImage))
{
    Point[] destPts = new Point[] { new PointF(x1, y1), 
        new PointF(x2, y2), new PointF(x4, y4)};
    gr.DrawImage(srcImage, destPts);

怎么样,你做到4点了吗(显然不支持以下,但这是想要的):

Bitmap destImage = new Bitmap(srcImage.Width, srcImage.Height);
using (Graphics gr = new Graphics.FromImage(destImage))
{
    Point[] destPts = new Point[] { new PointF(x1, y1), new PointF(x2, y2),
        new PointF(x3, y3), new PointF(x4, y4)};
    gr.DrawImage(srcImage, destPts);
}
有帮助吗?

解决方案

我能找到的最接近的是 此信息, ,这是非常滞后的。

其他提示

通常您会使用 3x3 矩阵来执行此操作,但 Matrix 类仅允许您指定 6 个值而不是 9 个值。您也许可以在 Direct X 中执行此操作。

当考虑 3D 工具将如何处理它时......尝试画一个三角形的一半,然后画另一个三角形的另一半。因此,如果您有 A、B、C 和 D 点;你可以(使用剪切平面)绘制 A、B、C,然后绘制 B、C、D 或类似的东西。

我在CodeProject中找到了以下文章:YLS 提供的免费图像转换 enter image description here

需要一些作品

也许你可以用这个:)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top