您好我正在实现 DPI 感知应用程序,我想根据当前分辨率计算窗口的位置。
我在 Windows 8.1 上测试了以下代码,如果我们更改 DPI 设置,操作系统不会要求重新登录。它立即应用 DPI。
var presentationSource = PresentationSource.FromVisual(this);
transform = presentationSource.CompositionTarget.TransformToDevice;
int width = transform.m11 * SystemParameters.PrimaryScreenWidth;
int height = transform.M22* SystemParameters.PrimaryScreenHeight;
但是如果我使用 mspanel 更改 DPI 而不注销并重新登录,则 TransformToDevice() 返回旧值而不是新值。我认为如果 DPI 设置改变,这个变换矩阵会改变。
当 DPI 设置更改时,我应该调用一种方法吗?