gpt4 book ai didi

c# - 在 .NET Framework 4.6.2 中,FormattedText() 已过时,我该如何修复它

转载 作者:可可西里 更新时间:2023-11-01 03:00:09 29 4
gpt4 key购买 nike

当我尝试使用 .net Framework 4.6.2 构建 WPF 项目时,出现错误,因为 FormattedText() 已过时,如下所示: [过时(“使用 PixelsPerDip 覆盖”,false)] public FormattedText(string textToFormat, CultureInfo culture, FlowDirection flowDirection, Typeface 字体, double emSize, Brush foreground);

新的覆盖方法是public FormattedText(string textToFormat, CultureInfo culture, FlowDirection flowDirection, Typeface 字体, double emSize, Brush foreground, double pixelsPerDip);

问:如何确定 pixelsPerDip ?

问:我如何使用没有 pixelsPerDip 的旧构造函数?因为 pixelsPerDip 对我的项目没有用。

最佳答案

您需要计算显示器的 DPI,请参阅: 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://github.com/Microsoft/WPF-Samples/tree/master/PerMonitorDPI

恕我直言,已添加此参数,以便您的程序可以在具有不同 DPI 的显示器之间拖动,并且仍然可以正确缩放。

来自 FromattedText 声明:pixelsPerDip:

The Pixels Per Density Independent Pixel value, which is the equivalent of the scale factor. For example, if the DPI of a screen is 120 (or 1.25 because 120/96 = 1.25) , 1.25 pixel per density independent pixel is drawn. DIP is the unit of measurement used by WPF to be independent of device resolution and DPIs.

如果您只有 1 个监视器,因此不需要任何 DPI 更改事件处理,请在 Window 的 OnLoaded() 事件(或构造函数)中使用以下示例:

var pixelsPerDip =  VisualTreeHelper.GetDpi(this).PixelsPerDip;

关于c# - 在 .NET Framework 4.6.2 中,FormattedText() 已过时,我该如何修复它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40277388/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com