一尘不染

如何计算WPF TextBlock的已知字体大小和字符宽度?

c#

假设我的TextBlock文字为 “ Some Text”字体大小为10.0

如何计算合适的TextBlock 宽度


阅读 681

收藏
2020-05-19

共1个答案

一尘不染

使用FormattedText该类。

我在代码中做了一个辅助函数:

private Size MeasureString(string candidate)
{
    var formattedText = new FormattedText(
        candidate,
        CultureInfo.CurrentCulture,
        FlowDirection.LeftToRight,
        new Typeface(this.textBlock.FontFamily, this.textBlock.FontStyle, this.textBlock.FontWeight, this.textBlock.FontStretch),
        this.textBlock.FontSize,
        Brushes.Black,
        new NumberSubstitution(),
        1);

    return new Size(formattedText.Width, formattedText.Height);
}

它返回可在WPF布局中使用的与设备无关的像素。

2020-05-19