Программно измерять текстовую строку в пикселях для Silverlight
В WPF есть формат FormattedText в пространстве имен System.Windows.Media MSDN FormattedText, который я могу использовать так:
private static Size GetTextSize(string txt, string font, int size, bool isBold)
{
Typeface tf = new Typeface(new System.Windows.Media.FontFamily(font),
FontStyles.Normal,
(isBold) ? FontWeights.Bold : FontWeights.Normal,
FontStretches.Normal);
FormattedText ft = new FormattedText(txt, new CultureInfo("en-us"), System.Windows.FlowDirection.LeftToRight, tf, (double)size, System.Windows.Media.Brushes.Black, null, TextFormattingMode.Display);
return new Size { Width = ft.WidthIncludingTrailingWhitespace, Height = ft.Height };
}
Есть ли хороший подход в Silverlight для получения ширины в пикселях (на данный момент высота не важна), помимо совершения вызова на сервер?
Ответы
Ответ 1
Подход, который я видел, используемый, который может не работать в вашем конкретном экземпляре, заключается в том, чтобы бросить текст в незашифрованный TextBlock, а затем получить ширину этого элемента управления, например:
private double GetTextWidth(string text, int fontSize)
{
TextBlock txtMeasure = new TextBlock();
txtMeasure.FontSize = fontSize;
txtMeasure.Text = text;
double width = txtMeasure.ActualWidth;
return width;
}
Это взломать, без сомнения.