2012-10-22 72 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”方法改进代码。 –

相关问题