如何从.NET中的矩形源区域复制到非矩形/非平行四边形目标区域?

时间:2008-11-30 21:56:17

标签: c# .net graphics

我知道如何使用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提供。

2 个答案:

答案 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提供。