win7 下修改dpi
win7 –> 控制面板 –> 显示 –> 设置自定义文本大小(DPI)
100% — 9磅 微软雅黑, 每英寸 96 像素
125% — 9磅 微软雅黑, 每英寸 120 像素
150% — 9磅 微软雅黑, 每英寸 144像素
200% — 9磅 微软雅黑, 每英寸 192 像素
百分比设置得越高,字体就越大
C++代码获取当前系统dpi
#define DEFAULT_DPI 96
HDC hdc = GetWindowDC(NULL);
if(NULL == hdc) {
LOG_PRINTF(EError, EthDirect, "main() %d\n", GetLastError());
}
int iHorizes = GetDeviceCaps(hdc, HORZRES); //当前设备横坐标的像素
int iVertres = GetDeviceCaps(hdc, VERTRES); //当前设备纵坐标的像素
LOG_PRINTF(EInfo, EthDirect, "\niHorizes = %d\niVertres = %d\n", iHorizes, iVertres);
int iLogPixelsX = GetDeviceCaps(hdc, LOGPIXELSX); //当前设备横坐标每英寸的像素值
int iLogPixelsY = GetDeviceCaps(hdc, LOGPIXELSY); //当前设备纵坐标每英寸的像素值
LOG_PRINTF(EInfo, EthDirect, "\niLogPixelsX = %d\niLogPixelsY = %d\n", iLogPixelsX, iLogPixelsY);
double dScaleX = (double)iLogPixelsX / DEFAULT_DPI;
double dScaleY = (double)iLogPixelsY / DEFAULT_DPI;
LOG_PRINTF(EInfo, EthDirect, "\ndScaleX = %.3lf\ndScaleY = %.3lf\n", dScaleX, dScaleY);
在上面的代码中 dScaleX
和 dScaleY
就是当前系统的dpi相对于100%dpi设置的比例。
只要把UI中的控件都相对应的放大或缩小这个倍数,UI就能够适应高清屏。