我使用DrawText在可视层上绘制FormattedText。现在我使用下面的代码来定义格式化文本,并且能够将TextAlignment设置为Center。但是VerticalAlignment呢?如图所示,文本中心下方不在中心点上,该中心点在此处显示为一个红点。
我定义FormattedText的部分:

var ft = new FormattedText("A",
    CultureInfo.GetCultureInfo("en-us"),
    FlowDirection.LeftToRight,
    new Typeface("Verdana"),
    36, Brushes.Yellow);

ft.TextAlignment = TextAlignment.Center;

我画文本的部分:
var centerpoint = new Point(0,0);
dc.DrawText(ft, centerpoint);

以下是最终结果:
我希望文本的中间位于圆的中心。

最佳答案

好吧,看来我能解决这个问题。没那么难。我会把答案贴在这里以备将来参考。它也可能帮助其他人。
似乎不存在一个VerticalAlignment的东西,所以我们需要自己计算和定位它。因为我们可以得到格式化文本的FormattedText属性。我们可以像这样轻松地对齐文本:

dc.DrawText(ft, new Point(centerpoint.X, centerpoint.Y- ft.Height/2));

07-24 09:47
查看更多