2

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

我一直在阅读 MSDN 上的 Graphics 方法,还查看了一些类似的例子,但没有找到太多。

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

谢谢!

4

1 回答 1

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();
于 2012-10-22T22:15:53.820 回答