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

本文关键字:图像 错误 缩放 控件 用户 | 更新日期: 2023-09-27 18:27:13

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

当我使用在控件上绘制图像时

e.Graphics.DrawImage(image, 0, 0);
//or
e.Graphics.DrawImageUnscaled(image, 0, 0);

图像总是按比例缩放到其大小的1.5倍左右。保持图像大小的唯一方法是将矩形传递给方法。

为什么用户控件/图像的行为是这样的?

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

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

但DrawImage使用设备分辨率来保持其"物理大小"。

请参阅msdn:

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

这就是函数行为的原因。

这同样适用于DrawImageUnscale。