2012-10-22 68 views
2

我有一個很大的.PNG,它上面有很多小圖片。我想用較小的一個替換大圖像的一部分。因此,在X和Y座標處,圖像的該部分將從左上角開始替換,同時仍保留原始圖像的其餘部分。在C#中用WinForms替換另一個圖像的一部分

我一直在閱讀有關MSDN上的圖形方法,也看過一些類似的東西,但沒有找到太多的例子。

有沒有人做過類似的事情?

謝謝!

回答

9

我會建議這種方法。 XY是您想要放置小圖像的大圖像上的座標。您可以檢查DrawImage方法重載,還有他們的30,但我認爲這一個最好的套房,你的情況:

Bitmap bigBmp = new Bitmap("bigBmp.png"); 
Bitmap smallBmp = new Bitmap("smallBmp.png"); 
Graphics g = Graphics.FromImage(bigBmp); 

Rectangle destRect = new Rectangle(x, y, smallBmp.Width, smallBmp.Height); 
Rectangle sourceRect = new Rectangle(0, 0, smallBmp.Width, smallBmp.Height); 

g.DrawImage(smallBmp, destRect, sourceRect, GraphicsUnit.Pixel); 
g.Dispose(); 

編輯:基於KvanTTT的評論,我決定用添加另一個解決問題的辦法DrawImageUnscaled,因爲它是繪製圖像的最快方式。這個方法有四個重載,但是這個是最簡單的,與這個問題相匹配。

Bitmap bigBmp = new Bitmap("bigBmp.png"); 
Bitmap smallBmp = new Bitmap("smallBmp.png"); 

Graphics g = Graphics.FromImage(bigBmp); 
g.DrawImageUnscaled(smallBmp, x, y); 
g.Dispose(); 
+0

謝謝尼克!非常感謝,就是我以後的事! – MrBeanzy

+0

@MrBeanzy這是我最喜歡的GDI +的一部分,所以這是我的榮幸。 –

+0

由於源矩形和目標矩形的寬度和高度相等,因此可以使用「DrawImageUnscaled」方法改進代碼。 –

相關問題