【问题标题】:WPF: Windows.Forms.Screen reporting wrong Bounds for MonitorsWPF:Windows.Forms.Screen 报告错误的监视器边界
【发布时间】:2014-08-26 12:12:21
【问题描述】:

我有一个 WPF 应用程序,想要输出我所拥有的监视器的边界和工作区域。代码如下:

foreach (var screen in Screen.AllScreens.ToList().OrderByDescending(s => s.Primary)) // Primary Screen comes first
{
    Console.WriteLine("Device:       " + screen.DeviceName);
    Console.WriteLine("Bounds      : " + screen.Bounds);
    Console.WriteLine("Working Area: " + screen.WorkingArea);
}

DISPLAY1 是我的主屏幕,DISPLAY2 是我的辅助屏幕。两者具有相同的分辨率:1920 x 1080。

奇怪的是这段代码给出了以下输出:

设备:\.\DISPLAY1 边界:{X=0,Y=0,Width=1920,Height=1080} 工作区域:{X=0,Y=0,Width=1920,Height=1046}

设备:\.\DISPLAY2 边界:{X=2400,Y=0,Width=2400,Height=1350} 工作区域:{X=2400,Y=0,Width=2400,Height=1308}

我还通过http://wpftutorial.net/ScreenResolutions.html 提供的 Monitor 类更改了 Screen.AllScreens 的使用,但这仍然返回相同的值。有人遇到过这个问题吗?

谢谢

约瑟夫

【问题讨论】:

    标签: c# wpf


    【解决方案1】:

    您似乎在两个屏幕上设置了不同的 DPI。

    【讨论】:

    • 同意。 Display2 上的 DPI 设置不同。
    • 嗨@RomanKo 和托尼,你是对的。从“控制面板”>“显示”>“让我为所有显示器选择一种缩放比例”将 dpi 设置更改为 100%,并将大小设置为 100%。申请并注销/登录!完成:)
    • @bonej010 当然,这解释了这种差异,但现在 HiDPI 在 4K 显示器的流行中很常见,您不应该期望用户删除 DPI 缩放以使您的应用程序正常工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-13
    • 1970-01-01
    相关资源
    最近更新 更多