- 代碼
同僚問吾,分辨率取得不對。吾一看:
int ppi = java.awt.Toolkit.getDefaultToolkit().getScreenResolution();
- 系統設定如下:
- 問題是這樣的:

- 直接用JAVA運作,得到120。
- 使用安裝版本的啟動器,結果是96。
這樣看是參數不對?于是吾就分析了一下啟動器參數(參考吾其他博文),結果發現兩種分辨率下沒有任何不同。
- 再看源碼:
JNIEXPORT jint JNICALL
Java_sun_awt_Win32GraphicsEnvironment_getXResolution(JNIEnv *env, jobject wge)
{
TRY;
HWND hWnd = ::GetDesktopWindow();
HDC hDC = ::GetDC(hWnd);
jint result = ::GetDeviceCaps(hDC, LOGPIXELSX);
::ReleaseDC(hWnd, hDC);
return result;
CATCH_BAD_ALLOC_RET(0);
}
這個跟比例真是一點關系也沒有。
- 解決辦法
跟同僚講:汝寫個本地接口擷取一下比例,然後自行換算。