【问题标题】:C# user control scaling image wronglyC# 用户控件缩放图像错误
【发布时间】:2014-10-21 16:48:32
【问题描述】:

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

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

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

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

为什么用户控件/图像会这样?

【问题讨论】:

    标签: c# winforms user-controls


    【解决方案1】:

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

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

    msdn看到这个:

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

    ...所以这就是函数行为的原因。

    same applies to DrawImageUnscaled

    【讨论】:

    • 图像的 dpi 为 72,仍在缩放中。
    • 所以你需要知道你的设备“Dpi”...我不确定,但似乎你可以使用Graphics.DpiX得到它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多