我正在使用FormattedText在WPF中使用自定义资源字体呈现文本,但由于某些奇怪的原因,在HiDPI模式下会忽略自定义字体。相同的代码在正常的DPI中工作正常。
以下是我的代码示例,其中BasicPoint和BasicColor是泛型类,因为我正在多个平台上进行渲染:
public void DrawText(string text, BasicPoint point, BasicColor color, string fontFace, float fontSize)
{
var formattedText = new FormattedText(text, CultureInfo.InvariantCulture, FlowDirection.LeftToRight, new Typeface(fontFace), fontSize, new SolidColorBrush(GenericControlHelper.ToColor(color)));
_context.DrawText(formattedText, GenericControlHelper.ToPoint(point));
}
例如,以下是传递给此方法的值:
text: "Hello World"
point: (0, 0)
color: (255, 255, 255)
fontFace: "Roboto Light"
fontSize: 12
此字体已作为TTF和资源添加到项目中。我通常在XAML中成功地引用它:
<TextBlock x:Name="lblLoopName" Text="{Binding Path=Name}" Margin="0" Padding="0,2,4,2" Foreground="Black" FontSize="11" FontFamily="/Resources/Fonts/#Roboto Regular" PreviewMouseDown="lblLoopName_OnPreviewMouseDown" />
我提醒你,使用FormattedText可以在没有HiDPI的情况下正常工作,它只是默认为HiDPI中的Arial。
感谢您对此问题的任何帮助,我一直在寻找解决方案!