2
我有一個很大的.PNG,它上面有很多小圖片。我想用較小的一個替換大圖像的一部分。因此,在X和Y座標處,圖像的該部分將從左上角開始替換,同時仍保留原始圖像的其餘部分。在C#中用WinForms替換另一個圖像的一部分
我一直在閱讀有關MSDN上的圖形方法,也看過一些類似的東西,但沒有找到太多的例子。
有沒有人做過類似的事情?
謝謝!
我有一個很大的.PNG,它上面有很多小圖片。我想用較小的一個替換大圖像的一部分。因此,在X和Y座標處,圖像的該部分將從左上角開始替換,同時仍保留原始圖像的其餘部分。在C#中用WinForms替換另一個圖像的一部分
我一直在閱讀有關MSDN上的圖形方法,也看過一些類似的東西,但沒有找到太多的例子。
有沒有人做過類似的事情?
謝謝!
我會建議這種方法。 X
和Y
是您想要放置小圖像的大圖像上的座標。您可以檢查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();
謝謝尼克!非常感謝,就是我以後的事! – MrBeanzy
@MrBeanzy這是我最喜歡的GDI +的一部分,所以這是我的榮幸。 –
由於源矩形和目標矩形的寬度和高度相等,因此可以使用「DrawImageUnscaled」方法改進代碼。 –