DrawImage在绘制图片的时候,为什么会擅自改变图片的大小?

我有一个PNG图片,大小是8X8像素,添加到项目的资源里面。然后在Paint事件中使用如下代码绘制到表单上:

Point pt = new Point(10,10); e.Graphics.DrawImage(Properties.Resources.top, pt.X, pt.Y, new Rectangle(0, 0, 8, 8), GraphicsUnit.Pixel);

画出来的效果,经过我用放大镜仔细判断,发现实际“画”在表单上的图片宽度变成了11个像素,莫名其妙多了三个像素的宽度出来,这究竟是为什么?

回复:

用这个图片还真会变大,但是我用画图工具打开再保存一下,然后就不会变大,和原来的一样了。

估计是用其他工具生成或者保存图片的时候图片的分辨率不同导致的。设置一下图片的分辨率就好了:

  private void Form1_Paint(object sender, PaintEventArgs e)
        {
            Point pt = new Point(10, 10);
            Bitmap bit = new Bitmap(Properties.Resources.save1);
            bit.SetResolution(96.0F, 96.0F);
            e.Graphics.DrawImage(bit, pt.X, pt.Y, new Rectangle(0, 0, 169,32), GraphicsUnit.Pixel);
        }

参考资料:http://msdn.microsoft.com/zh-cn/library/system.drawing.bitmap.setresolution.aspx

或者先直接转换到Bitmap就好了。

原来还真是分辨率的问题,记录一下

文章来源:http://social.msdn.microsoft.com/Forums/zh-CN/visualcshartzhchs/thread/1385ba2b-72a3-4e8c-8572-b8ba7184d659

原文地址:https://www.cnblogs.com/meteortent/p/2360984.html