我不知道.Net中是否有任何集成的内容可以让你进行非仿射变换。我猜你正在尝试进行某种形式的3D纹理映射?如果是这样,你需要一个均匀的仿射变换,但在.Net中不可用。我也不知道有任何集成的方法来进行像素位移变换。然而,目前投票最多的解决方案可能适合你想做的事情,只要注意它不会直接进行透视校正。例如:左边的图片是使用Neil N提供的单个四边形失真库生成的,右边的图片是使用DirectX中的单个四边形(实际上是两个三角形)生成的。这可能对你正在尝试做的事情没有任何影响,但如果你想做3D东西,没有透视正确的映射,它看起来会非常奇怪。
你发布的所有示例图像都可以使用四边形畸变完成。尽管我不能确定四边形畸变是否能够覆盖所有非仿射变换。这里是一个C#中不太好的实现链接...它可以工作,但速度很慢。在维基百科上查找可用于这些计算的许多不同优化。 http://www.vcskicks.com/image-distortion.html -Neil
您可以使用WPF中的Viewport3D控件和非仿射变换矩阵来实现此操作。再次将其渲染为位图可能会很有趣...我通过在我的纹理平面上包含一个不可见的<image>控件并使用相同的图像来"修复"它...(另外,我不得不通过分割平面和裁剪图像来解决最大纹理大小问题...) http://www.charlespetzold.com/blog/2007/08/060605.html 在我的情况下,我想要相反的结果(将变形图上的任意点转换为矩形窗口的角落),这就是执行相反操作的矩阵的逆。