2008-11-30 128 views
0

我知道如何使用Graphics对象的DrawImage()方法将矩形源区域复制到矩形目标区域,以及如何复制到由三元素Point []数组定义的并列区域。如何从.NET中的矩形源区域复制到非矩形/非并行区域目标区域?

.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

对不起,只知道win32方法;-) – 2008-11-30 22:00:29

回答

1

据我所知,在.NET中没有一种简单的(内置的)方式来进行这种图像转换。

如果您在代码项目上查看Anti Aliased Image Transformation (Aaform),您可以下载他的样本,其中有一个纯粹的vb实现(以及vb和C++样本)。

也有Anti-Grain Geometry,免费使用(用于非商业)的C++图形库和a c# wrapper它。

希望这会有所帮助。