“分辨率太高真的会眼瞎”
这基本成了所有高清屏笔记本评测、推荐文章里必提的内容。
前段时间,搞了台1080p的全高清屏,感受是:痛并快乐着。
在这一点上,起码windows下的桌面软件,没有跟上硬件的发展。得益于win8的DPI虚拟化,布局混乱的情况很少见了,但字体过小、字体模糊确实大部分软件的通病。包括不才正在使用的chrome。QQ、360、迅雷等一系列看上去财大气粗的软件,也不能在高DPI模式下完美呈现。
其实,开发高DPI识别的软件,也不是难事,以下3步:
- 在vs工程的属性=》清单工具=》所有选项,中设置“DPI识别功能”为“高DPI识别”
- 创建窗口时,注意使用GetDeviceCaps×尺寸/96(默认DPI),代码示例如下(MSDN):
FLOAT dpiX, dpiY; HDC screen = GetDC(0); dpiX = static_cast<FLOAT>(GetDeviceCaps(screen, LOGPIXELSX)); dpiY = static_cast<FLOAT>(GetDeviceCaps(screen, LOGPIXELSY)); ReleaseDC(0, screen); hWnd = CreateWindow( TEXT("DirectWriteApp"), TEXT("DirectWrite Demo App"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, static_cast<INT>(dpiX * 640.f / 96.f), static_cast<INT>(dpiY * 480.f / 96.f), NULL, NULL, hInstance, NULL );
- 字体:类似上面的缩放处理
- 图片:使用上面的缩放,或根据DPI更换不同分辨率图片。