A volte può capitare di avere la necessità di dovere misurare le dimensioni di un testo e ritrovarsi orfani di Graphics.MeasureString/TextRenderer.MeasureText dei WinForms può portare a dei momenti di sconforto… smile_regular

L’equivalente WPF è:

public Size Measure(string text, double fontSize, string typeFace)
{
    FormattedText ft = new FormattedText(text, 
        CultureInfo.CurrentCulture,
        FlowDirection.LeftToRight,
        new Typeface(typeFace),
        fontSize,
        Brushes.Black);            
    return new Size(ft.Width, ft.Height);
}

Mentre in Silverlight è necessario un piccolo workaround:

public Size Measure(string text, double fontSize, string fontFamily)
{    
    TextBlock tb = new TextBlock()
    {
        Text = text,
        FontSize = fontSize,
        FontFamily = new FontFamily(fontFamily)
    };
    return new Size(tb.ActualWidth, tb.ActualHeight);
}
Technorati Tags: