我有一个很大的.PNG,上面有很多小图片。我想用较小的图像替换部分大图像。因此,在X和Y坐标处,图像的这一部分将从左上角开始替换,同时仍保留原始图像的其余部分。
我一直在阅读关于MSDN上的Graphics方法的内容,并且还看了一些类似的东西,但没有找到太多。
有没有人做过类似的事情?
谢谢!
答案 0 :(得分:9)
我会建议这种方法。 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();