我知道如何使用Graphics对象的DrawImage()方法从矩形源区域复制到矩形目标区域,以及如何复制到由三元素Point []数组定义的paralellogram区域。 / p>
.NET中有没有办法从矩形源区域复制到4面非矩形目标区域(由四个任意点定义)?
更新即可。下面是一些将图像复制到平行四边形区域的示例代码:
using (Graphic g = this.CreateGraphics())
{
List<Point> pts = new List<Point>();
pts.Add(new Point(0, 0));
pts.Add(new Point(100, 0));
pts.Add(new Point(10, 100));
g.DrawImage(pbSource.Image, pts.ToArray());
}
如果我添加第四个点,我会得到一个“未实现”的例外。
更新2 。 可以在.NET中完全执行此操作:
alt text http://www.freeimagehosting.net/uploads/a770d1e97f.jpg
但你必须自己做,逐个像素。图形由Jonbert提供。
答案 0 :(得分:1)
据我所知,在.NET中没有一种简单的(内置)方式来进行这种图像转换。
如果你在codeproject上查看Anti Aliased Image Transformation (Aaform),你可以下载他的样本,其中有一个纯vb实现的概念(以及vb和c ++样本)。
还有Anti-Grain Geometry,免费使用(非商业用途)c ++图形库和a c# wrapper。
希望这有帮助。
答案 1 :(得分:0)
可以在.NET中完全执行此操作:
alt text http://www.freeimagehosting.net/uploads/a770d1e97f.jpg
但你必须自己做,逐个像素。图形由Jonbert提供。