使用PixelsPerDip覆盖?WPF.NET4.8从.NET4.6升级

使用PixelsPerDip覆盖?WPF.NET4.8从.NET4.6升级,.net,wpf,vb.net,.net,Wpf,Vb.net,我们刚刚将一个.NET4.6项目升级到.NET4.8,并使用此功能 Private Function MeasureTextSize(ByVal text As String, ByVal fontFamily As FontFamily, ByVal fontStyle As FontStyle, ByVal fontWeight As FontWeight, ByVal fontStretch As FontStretch, ByVal fontSize As Double) As Size

我们刚刚将一个.NET4.6项目升级到.NET4.8,并使用此功能

Private Function MeasureTextSize(ByVal text As String, ByVal fontFamily As FontFamily, ByVal fontStyle As FontStyle, ByVal fontWeight As FontWeight, ByVal fontStretch As FontStretch, ByVal fontSize As Double) As Size

    Dim ft As New FormattedText(text, System.Globalization.CultureInfo.CurrentCulture, FlowDirection.LeftToRight, New Typeface(fontFamily, fontStyle, fontWeight, fontStretch), fontSize, Brushes.Black)
    Return New Size(ft.Width, ft.Height)
End Function
正在显示以下警告

warning BC40000: 'Public Overloads Sub New(textToFormat As String, culture As CultureInfo, flowDirection As FlowDirection, typeface As Typeface, emSize As Double, foreground As Brush)' is obsolete: 'Use the PixelsPerDip override'.
记住这是一个模块,如何纠正


谢谢

您基本上有三种选择:

  • 创建一个可视对象,并使用
    GetDpi
    方法获取
    pixelsPerDip
    参数的值:

    VisualTreeHelper.GetDpi(new Button()).PixelsPerDip
    
  • 自己定义一个静态值,例如
    1.25

  • 忽略警告并使用过时的重载


您基本上有三种选择:

  • 创建一个可视对象,并使用
    GetDpi
    方法获取
    pixelsPerDip
    参数的值:

    VisualTreeHelper.GetDpi(new Button()).PixelsPerDip
    
  • 自己定义一个静态值,例如
    1.25

  • 忽略警告并使用过时的重载


警告消息告诉您,您正在使用的
New FormattedText()
重载已过时,但同一构造函数中存在另一个重载,该重载未过时,您应该使用

因此,您正在寻找的解决方案是替换此:

New FormattedText( ... )
为此:

New FormattedText( ..., 1.0 );

警告消息告诉您,您正在使用的
New FormattedText()
重载已过时,但同一构造函数存在另一个重载,该重载未过时,您应该使用

因此,您正在寻找的解决方案是替换此:

New FormattedText( ... )
为此:

New FormattedText( ..., 1.0 );

更改从4.6.1更改为4.6.2。然而,这只是一个警告。如果你想摆脱它,使用新的重载。你将无法编译4.6.1或更低版本。克莱门斯-谢谢你的回复,但是我如何使用新的重载?到处都找不到解释。这可能是其中的一天。
var pixelsPerDip=visualtreeheloper.GetDpi(this.pixelsPerDip“this”(VB中的“me”)在模块中不起作用。不知道模块是什么,抱歉…更改是从4.6.1更改为4.6.2。然而,这只是一个警告。如果你想摆脱它,使用新的重载。你将无法编译4.6.1或更低版本。克莱门斯-谢谢你的回复,但是我如何使用新的重载?到处都找不到解释。这可能是其中的一天。
var pixelsPerDip=visualtreeheloper.GetDpi(this.pixelsPerDip'this'('me'在VB中)在模块中不起作用。不知道模块是什么,抱歉。。。