在C#中用WinForms替换另一个图像的一部分
问题描述:
我有一个很大的.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”方法改进代码。 –