C#用户控制缩放图像错误

时间:2014-10-21 08:36:50

标签: c# winforms user-controls

我有一个带有Image属性的usercontrol。该图像是resources.resx,大小为48x48。

当我使用:

在控件上绘制图像时
e.Graphics.DrawImage(image, 0, 0);
//or
e.Graphics.DrawImageUnscaled(image, 0, 0);

图像始终缩放到其大小的1.5倍。将图像保持为我想要的大小的唯一方法是将Rectangle传递给方法。

为什么usercontrol / image的行为是这样的?

1 个答案:

答案 0 :(得分:2)

当你说图像被缩放时,我想你指的是它的像素数......

但DrawImage使用设备分辨率来维持其“物理尺寸”。

请参阅msdn

  

DrawImage方法使用其物理大小绘制图像,因此   无论如何,图像都将以英寸为单位   显示设备的分辨率(每英寸点数)。例如,假设   图像的像素宽度为216,水平分辨率为72   每英寸点数。如果您调用DrawImage在设备上绘制该图像   分辨率为每英寸96点,像素宽度为   渲染图像将是(216/72)* 96 = 288

...所以这就是功能行为的原因。

same applies to DrawImageUnscaled