获取呈现的文字字母尺寸

Get rendered text letters dimensions

我有一个非常简单的设置 - 我有 string、字体和字体大小准备就绪。我想将它渲染到 Silverlight WriteableBitmap.

有一个问题 - 我希望能够区分渲染文本中的字母。理想情况下,我希望每个呈现的字母都有一个 System.Windows.Rect

问题出在 Silverlight 的 API,它缺少所有有用的东西,例如 Graphics.MeasureString,我本可以用它来单独测量字母。

我有什么足够的选择来在代码隐藏中获取字母的大小?

这是我自己想出来的。该解决方案速度缓慢且远非完美,但是,嘿,它有效!

想法是多次渲染文本,一次添加一个字母,并找出当前和之前 TextBlock 宽度之间的差异。

因此,例如,如果文本是 "ab",我们首先渲染 "a" 并获取其长度。然后我们渲染"ab",找到差异,应该是渲染后的大小"b".