在WPF4中,如何计算drawingvisual的FormattedText或GlyphRun的'Size'。
我在画布上用的是drawingvisual。当我更改文本大小或文本时,会发生更改,但实际宽度和高度是相同的,或者没有更新。
Using dc As DrawingContext = drawingvisual.RenderOpen
Dim ft As New FormattedText(...)
dc.DrawText(ft, New Point(0, 0))
dc.Close()
End Using发布于 2011-07-20 02:49:46
初始化FormattedText后,在给定参数的情况下,它的宽度和高度成员等于实际呈现的大小。实际上,更改参数会立即更新它们,例如:
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
发布于 2013-03-31 12:35:49
顺便说一句:我注意到使用DrawingContext.DrawGlyphRun与使用DrawingContext.DrawFormattedText相比,性能提高了10倍左右。
GlyphRun没有很好的文档,但是一旦你阅读了this article,你应该能够理解它是如何工作的。
https://stackoverflow.com/questions/6717199
复制相似问题