【问题标题】:Understanding multi monitor dpi了解多显示器 dpi
【发布时间】:2015-07-19 08:58:19
【问题描述】:

在 Windows 8.1 上,我创建了一个 firefox 插件来截取屏幕截图。

我遇到了问题。这就是我正在做的:

  1. 我有这样的设置(mon1 不是主显示器,分辨率为 1920x1080,显示器 2 是主显示器,分辨率为 1280x1024)
  2. 将所有监视器截屏到 ImageData。
  3. 使用此代码打开两个无功能/无边框的窗口:
  4. 然后在窗口打开后,我将它移动到每个监视器的 originX 和 originY 然后使其全屏:

    aEditorDOMWindow.moveTo(colMon[iMon].x, colMon[iMon].y);

    aEditorDOMWindow.focus(); aEditorDOMWindow.fullScreen = true;

  5. 然后我在每个窗口中创建一个宽度 x 高度与屏幕分辨率匹配的画布,并在其上绘制监视器屏幕截图

所以现在的问题是,窗口在监视器 2 上打开,然后当我将其移动到监视器 1 并检查画布时,大小为 1920x1080 与分辨率匹配,但在下面的视频记录中,我用 Photoshop 测量了它视觉上实际上是 2880 x 1620。

这是一个演示它的 youtube 截屏视频: Youtube :: Why other monitor almost double size?

我总是注意到,当我将一个窗口从一台显示器拖到另一台显示器时,它的大小会略有变化,这叫什么?它特定于 Window8.1+ 吗?无论如何我可以使用 WinAPI 触发此调整大小?

【问题讨论】:

    标签: windows winapi resolution monitor multiple-monitors


    【解决方案1】:

    您无疑会看到 Windows 的 DPI 虚拟化功能在发挥作用。在这种情况下,您无能为力,由主应用程序声明自己支持多显示器 DPI。

    不是,Mozilla bug #890156 的主题。已经两岁了,他们并不急于修复它。票数不多,可以加一票。

    【讨论】:

    • 当我创建一个大小与所有显示器相加的巨大窗口并将其放置在最左上角的位置,然后在画布上的正确 x y 处绘制屏幕截图时,我没有遇到此问题监控:imgur.com/qlWmwZo,48fHFxP你能帮我理解为什么吗?
    • 在创建屏幕截图之前,您没有将窗口移动到第一台显示器。所以它没有重新缩放。
    • 哇,谢谢汉斯!!我将尝试将窗口移动到第一个监视器,然后绘制并看看会发生什么。我会回来报告的!
    • 嗨@HansPassant 能否请您改写“在创建屏幕截图之前将窗口移动到第一个星期一”我似乎无法解决问题,我想我误解了。我在主监视器 (1, 1) 的位置创建窗口,然后将屏幕截图绘制到它,然后将其移动到第一个监视器并且它仍然放大 x1.5 :(
    • 您必须从容应对:“您无能为力”。 DPI 虚拟化是一项功能,而不是错误。没有它,像素太靠近了,所以窗口太小了。它可以防止窗口变成您无法阅读的邮票,除非您将鼻子贴在屏幕上。解决方法是让窗口更大,Firefox 不会为你做这件事。你投票了吗?
    猜你喜欢
    • 2022-01-10
    • 2021-10-18
    • 2013-09-10
    • 1970-01-01
    • 1970-01-01
    • 2013-09-26
    • 2011-12-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多