有没有办法绘制图像使用4点而不是3点(透视扭曲)

时间:2008-09-01 19:13:11

标签: c# .net gdi+

使用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);
}

4 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

在考虑3D工具如何处理它时...尝试绘制一半的三角形,然后绘制另一半的另一个三角形。所以,如果你有积分A,B,C和& d;你会绘制(使用剪裁平面)A,B,C,然后是B,C,D或类似的东西。

答案 2 :(得分:0)

我在CodeProject中找到了以下文章: Free Image Transformation By YLS enter image description here

需要一些作品

也许你可以使用它:)

答案 3 :(得分:-1)

我能找到的最近的是this information,这是非常滞后的。