JxBrowser右鍵選單位置偏移

2020-10-03 11:00:14

參照demo寫完右鍵選單,發現選單位置與滑鼠隔著一定的距離。因為很久以前在使用VB開發螢幕取色器時碰到過類似的問題,我猜測是win10螢幕縮放的問題(用win7系統的時候沒碰到過這樣的問題)。

桌面右鍵,選擇「顯示設定」,發現當前的縮放比例是125%,於是把座標乘以125%,右鍵選單位置正常。

 

之後嘗試使用JAVA呼叫windows API去獲取縮放比例,折騰了一陣,發現獲取的螢幕DPI值是120,和我想要的125有點差距。(DPI是什麼?自行百度)

由於對DPI的概念不熟,一直以為DPI就是螢幕縮放比例。後來偶然在百度上看到,不同的DPI對應不同的螢幕縮放比例,豁然開朗。

DPI is how scaling setting is implemented. Their relationship is:(dpi是如何實現縮放設定的。他們的關係如下:)
96 DPI = 100% scaling
120 DPI = 125% scaling
144 DPI = 150% scaling
192 DPI = 200% scaling

知道了這些,一切都好辦了,不需要呼叫windows api,Java自帶獲取DPI的方法。

int dpi=Toolkit.getDefaultToolkit().getScreenResolution();
int scaling=100;
switch(dpi) {
case 120:
    scaling=125;
    break;
case 144:
    scaling=150;
    break;
case 192:
    scaling=200;
    break;
}

再用得到螢幕座標乘以scaling除以100,使右鍵選單在不同縮放比例的電腦上位置不偏移。