- 代码
同事问吾,分辨率取得不对。吾一看:
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); }
这个跟比例真是一点关系也没有。
- 解决办法
跟同事讲:汝写个本地接口获取一下比例,然后自行换算。