C#为什么一些位图在使用GDI+;复制后会调整大小;?

C#为什么一些位图在使用GDI+;复制后会调整大小;?,c#,bitmap,copy,gdi,C#,Bitmap,Copy,Gdi,我有一个位图变量,我将较小的32x32 png文件(加载为位图)复制到位图上。但是,一些png被放大(总是相同的),例如在复制后显示为36x36。就好像有些png有另一个DPI什么的?我怎样才能防止这种情况 Graphics g = Graphics.FromImage(destinationImage); g.DrawImage(sourceImage, location); // sourceImage is sometimes larger than it actually i

我有一个位图变量,我将较小的32x32 png文件(加载为位图)复制到位图上。但是,一些png被放大(总是相同的),例如在复制后显示为36x36。就好像有些png有另一个DPI什么的?我怎样才能防止这种情况

   Graphics g = Graphics.FromImage(destinationImage);
   g.DrawImage(sourceImage, location); // sourceImage is sometimes larger than it actually is. On disk it is 32x32 but after copying it might be bigger...
   g.Dispose();

我想您对DPI的看法是正确的,正如文档中所述:

此方法使用图像的物理大小绘制图像


我懒得做测试项目,但我认为Graphics.DrawImage(Image,Rectangle)的矩形大小等于源图像大小可以解决您的问题。

Image.Horizontal/VerticalResolution属性很重要。如果它与显示器的每英寸点数设置不匹配,则图像将按比例放大或缩小。这往往是不可取的,使用DragImage(图像,矩形)重载强制它以精确的32 x 32像素显示