使用WinForms在C#中用另一部分替换图像的一部分

时间:2012-10-22 22:08:59

标签: c# winforms image

我有一个很大的.PNG,上面有很多小图片。我想用较小的图像替换部分大图像。因此,在X和Y坐标处,图像的这一部分将从左上角开始替换,同时仍保留原始图像的其余部分。

我一直在阅读关于MSDN上的Graphics方法的内容,并且还看了一些类似的东西,但没有找到太多。

有没有人做过类似的事情?

谢谢!

1 个答案:

答案 0 :(得分: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();