參照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,使右鍵選單在不同縮放比例的電腦上位置不偏移,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/152209.html
標籤:其他
上一篇:C++飛行員兄弟(列舉)
