了解多显示器dpi

时间:2015-07-19 08:58:20

标签: windows winapi resolution monitor multiple-monitors

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

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

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

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

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

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

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

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

    我总是注意到,当我将一个窗口从一个显示器拖到另一个显示器时,它稍微改变了尺寸,这叫做什么?它是否特定于Window8.1 +?无论如何使用WinAPI我可以触发此大小调整吗?

1 个答案:

答案 0 :(得分:3)

毫无疑问,Windows的DPI虚拟化功能正在发挥作用。在这种情况下,您无法做任何事情,主要应用程序可以声明自己的多显示器DPI意识。

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