2015-07-19 71 views
0

在Windows 8.1上,我創建了一個firefox插件來拍攝屏幕截圖。瞭解多顯示器dpi

我有問題。這是我在做什麼:

  1. 我有這樣的設置(MON1不是主顯示器,擁有1920×1080解析度,監測2是主要的,具有1280×1024解析度)
  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 screencast演示: Youtube :: Why other monitor almost double size?

我總是注意到,當我將一個窗口從一臺顯示器拖到另一臺顯示器時,它會稍微改變大小,這叫做什麼?它是否特定於Window8.1 +?反正有WinAPI我可以觸發這個調整大小?

回答

3

毫無疑問,您可以看到Windows的DPI虛擬化功能在工作。在這種情況下,您無能爲力,因此主要的應用程序可以自行聲明多顯示器DPI。

它沒有,Mozilla bug #890156的主題。已經兩歲了,他們並不急於修復它。不是很多的投票,你可以添加一個。

+0

我沒有遇到這個問題,當我創建一個巨大的窗口大小的所有顯示器組合並將其放置在最左上角的點,然後在畫布上的正確xy顯示器上繪製截圖:http:/ /imgur.com/qlwmwZo,48fHFxP你能幫我理解爲什麼嗎? – Noitidart

+1

在創建屏幕截圖之前,您沒有將窗口移動到第一臺顯示器。所以它沒有重新調整。 –

+0

謝謝漢斯!我將嘗試將窗口移至第一個監視器,然後繪製並查看會發生什麼。生病回報! – Noitidart