我有一个带有Image属性的usercontrol。该图像是resources.resx,大小为48x48。
当我使用:
在控件上绘制图像时e.Graphics.DrawImage(image, 0, 0);
//or
e.Graphics.DrawImageUnscaled(image, 0, 0);
图像始终缩放到其大小的1.5倍。将图像保持为我想要的大小的唯一方法是将Rectangle传递给方法。
为什么usercontrol / image的行为是这样的?
答案 0 :(得分:2)
当你说图像被缩放时,我想你指的是它的像素数......
但DrawImage使用设备分辨率来维持其“物理尺寸”。
请参阅msdn:
DrawImage方法使用其物理大小绘制图像,因此 无论如何,图像都将以英寸为单位 显示设备的分辨率(每英寸点数)。例如,假设 图像的像素宽度为216,水平分辨率为72 每英寸点数。如果您调用DrawImage在设备上绘制该图像 分辨率为每英寸96点,像素宽度为 渲染图像将是(216/72)* 96 = 288 。
...所以这就是功能行为的原因。