如何在wpf中计算FormattedText或GlyphRun的'Size'?

时间:2011-07-16 12:00:24

标签: wpf formatting glyph

在WPF4中,我如何为'Size'计算FormattedTextGlyphRun的{​​{1}}。

我在画布中使用drawingvisual。当我更改文本大小或文本时,会发生更改,但实际宽度和高度相同或不会更新。

drawingvisual

2 个答案:

答案 0 :(得分:6)

初始化FormattedText后,它的Width和Height成员等于其参数的实际渲染大小。实际上,更改参数会立即更新它们,例如:

FormattedText ft = new FormattedText(cellString, CultureInfo.CurrentCulture, FlowDirection.LeftToRight, fontFace, fontSize, fontBrush);
ft.Trimming = TextTrimming.CharacterEllipsis;
double originalHeight = ft.Height;
double width = ft.Width;
ft.MaxTextWidth = bCellRect.Width;    // Set the width to get a new height
double height = ft.Height;

编辑GlyphRun:创建GlyphRun时,您已经为每个字符提供了预先宽度,因此您可以为宽度添加宽度。要获得高度,请使用GlyphTypeface.Baseline * FontSize

答案 1 :(得分:3)

正如旁注:在使用DrawingContext.DrawGlyphRun与DrawingContext.DrawFormattedText时,我注意到性能提升了大约10倍。

GlyphRun没有详细记录,但是一旦你阅读this article,你应该能够理解它是如何工作的。