2008-11-30 168 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它。

希望這會有所幫助。