【问题标题】:How to get DPI in C# .NET?如何在 C# .NET 中获取 DPI?
【发布时间】:2011-07-27 12:19:41
【问题描述】:

我正在尝试使用 C# 构建一个 Windows 窗体应用程序。

如何在 .NET 中获取 DPI?

我之前看过,有DPIX和DPIY,可以在.NET中使用来获取当前的DPI。

对吗?

谢谢大家。

【问题讨论】:

    标签: c# .net winforms dpi


    【解决方案1】:

    使用Graphics 类的实例。您可以在表单中使用以下内容(可能在表单的Load 事件处理程序中):

    float dx, dy;
    
    Graphics g = this.CreateGraphics();
    try
    {
        dx = g.DpiX;
        dy = g.DpiY;
    }
    finally
    {
        g.Dispose();
    }
    

    【讨论】:

    • 如果将像素转换为点使用DPI值,可以使用哪个DPI(DpiX或DpiY)?或者有一些技巧可以将像素值转换为点?谢谢...
    • 嗯,一个像素就是一个位置,所以它有一个 X 和一个 Y 坐标。使用 DpiX 查找 X 坐标,使用 DpiY 查找 Y 坐标。同样的事情也适用于缩放的东西 - 水平比例因子使用 DpiX 确定,垂直比例因子使用 DpiY。
    • 好答案,比scaleControl 方法(或类似的东西)的(在其他地方找到)重载要好。顺便说一句,如果您想要“相对于默认 DPI 的比例”,您只需将其除以 96.0f
    • 我发现即使在 Windows 10 上将缩放设置为 150%,它也会返回 96。这是在一个较旧的应用程序中,它不会告诉 Windows 它是 DPI 感知的。我认为这种方法必须进行额外的更改才能起作用。
    • @DanielEarwicker Dpi 不依赖于窗口的缩放。这取决于屏幕。 dpi 值表示一英寸中有多少像素(或 ppi - 每英寸像素数)。它具有不同的 X 和 Y 值,因为像素不是完美的正方形,它们实际上是矩形。当您想以真实世界大小显示某些东西时(例如,如果您想在屏幕上显示一个 3 英寸宽和 5 英寸高的矩形),您可以使用 DPI,它的像素大小将为Width = 3*DpiX; Height = 5*DpiY;
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 2011-06-03
    • 1970-01-01
    相关资源
    最近更新 更多