当我尝试使用 .net Framework 4.6.2 构建 WPF 项目时,出现错误,因为 FormattedText() 已过时,如下所示:[已过时(“使用 PixelsPerDip 覆盖”, false)]
公共FormattedText(字符串textToFormat,CultureInfo文化,FlowDirection flowDirection,Typeface字体,double emSize,画笔前景);
新的覆盖方法是公共FormattedText(字符串textToFormat,CultureInfo文化,FlowDirection flowDirection,Typeface字体,双emSize,画笔前景,双pixelPerDip);
问:如何确定pixelsPerDip?
问:如何使用没有pixelsPerDip 的旧构造函数?,因为pixelsPerDip 对我的项目没有用。
您需要计算显示器的 DPI,请参阅:如何获取 WPF 中的 DPI? https://stackoverflow.com/questions/1918877/how-can-i-get-the-dpi-in-wpf
此外,.Net 4.6.2 提供了新的 API 来处理 DPI 感知,因此上述方法可能会被弃用(例如 VisualTreeHelper.GetDpi())。
看https://blogs.msdn.microsoft.com/dotnet/2016/08/02/announcing-net-framework-4-6-2/ https://blogs.msdn.microsoft.com/dotnet/2016/08/02/announcing-net-framework-4-6-2/这是一些示例代码和用户指南:https://github.com/Microsoft/WPF-Samples/tree/master/PerMonitorDPI https://github.com/Microsoft/WPF-Samples/tree/master/PerMonitorDPI
恕我直言,已添加此参数,以便您的程序可以在具有不同 DPI 的显示器之间拖动,并且仍然可以正确缩放。
来自 FromattedText 声明:pixelsPerDip:
每密度像素独立像素值,即
相当于比例因子。例如,如果屏幕的 DPI 是
120(或 1.25,因为 120/96 = 1.25),每密度 1.25 像素
绘制独立像素。 DIP是WPF使用的测量单位
独立于设备分辨率和 DPI。
如果您只有 1 个显示器,因此不需要任何 DPI 更改事件处理,请在 Window 的 OnLoaded() 事件(或构造函数)中使用以下示例:
var pixelsPerDip = VisualTreeHelper.GetDpi(this).PixelsPerDip;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)