我不希望我的 WPF GUI 根据 Windows 字体大小选项 (DPI) 进行缩放。这不仅仅是在 UserControl 上指定固定字体大小的问题,因为缩放会影响 UserControl 中的图像和边框。我可以在 UserControl 上设置一个属性来关闭缩放吗?如果没有,我该怎么做?
您可以根据当前的 DPI 设置缩小 UserControl。例如,如果您使用以下 DpiDecorator 包装 UserControl,则无论 DPI 设置如何,它看起来都应该相同:
public class DpiDecorator : Decorator {
public DpiDecorator() {
this.Loaded += (s, e) => {
Matrix m = PresentationSource.FromVisual(this).CompositionTarget.TransformToDevice;
ScaleTransform dpiTransform = new ScaleTransform(1 / m.M11, 1 / m.M22);
if (dpiTransform.CanFreeze)
dpiTransform.Freeze();
this.LayoutTransform = dpiTransform;
};
}
}
或者您可以将该逻辑移至您的用户控件。
获取DPI比例因子的代码来自于此博客文章 https://learn.microsoft.com/en-us/archive/blogs/jaimer/getting-system-dpi-in-wpf-app.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)