首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >以编程方式为Silverlight测量以像素为单位的文本字符串

以编程方式为Silverlight测量以像素为单位的文本字符串
EN

Stack Overflow用户
提问于 2011-02-05 00:23:54
回答 1查看 7.6K关注 0票数 17

在WPF中,我可以这样使用System.Windows.Media名称空间MSDN FormattedText中的FormattedText:

代码语言:javascript
复制
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中有没有一个很好的方法来获取像素宽度(此时高度并不重要)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-02-05 00:34:45

我见过的一种方法是将文本放入一个未设置样式的TextBlock中,然后获取该控件的宽度,如下所示:

代码语言:javascript
复制
private double GetTextWidth(string text, int fontSize)
{
    TextBlock txtMeasure = new TextBlock();
    txtMeasure.FontSize = fontSize;
    txtMeasure.Text = text;
    double width = txtMeasure.ActualWidth;
    return width;
}

毫无疑问,这是个黑客行为。

票数 30
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4900316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档