有什么方法可以使用 4 个点而不是 3 个点来绘制图像(透视扭曲)
题
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 或类似的东西。
不隶属于 StackOverflow