我正在使用此 MSDN 指南使我的应用程序 DPI 敏感,其中缩放技术使用来自设备上下文的 X 和 Y 逻辑像素。
int _dpiX = 96, _pdiY = 96;
HDC hdc = GetDC(NULL);
if (hdc)
{
_dpiX = GetDeviceCaps(hdc, LOGPIXELSX);
_dpiY = GetDeviceCaps(hdc, LOGPIXELSY);
ReleaseDC(NULL, hdc);
}
然后你可以使用缩放 X 和 Y 坐标
int ScaleX(int x) { return MulDiv(x, _dpiX, 96); }
int ScaleY(int y) { return MulDiv(y, _dpiY, 96); }
有没有一种情况GetDeviceCaps(hdc, LOGPIXELSX)
会GetDeviceCaps(hdc, LOGPIXELSY)
为监视器返回不同的数字。我真正关心的唯一设备是显示器,所以我需要单独的ScaleX(int x)
和ScaleY(int y)
功能吗?我可以只使用一个Scale(int px)
功能吗?这样做会有坏处吗?
在此先感谢您的帮助。