我遇到了一种情况,即使用垂直居中文本无法正确对齐。尤其是当字体大(即40)时。我可以通过在顶部应用负边距来解决此问题,但是有没有办法以编程方式计算边距的金额?我尝试获取FormattedText,但是数字与屏幕上显示的数字不匹配。
<Border BorderBrush="Black" BorderThickness="1,1,1,1" Width="46" Height="46" UseLayoutRounding="True" SnapsToDevicePixels="True">
<TextBlock FontFamily="Gadugi" Margin="0,-4,0,0" FontSize="36" Text="1" HorizontalAlignment="Center" VerticalAlignment="Center" />
</Border>
-4解决了这种情况,但是我如何明智地计算-4代码呢?由于每种字体/每种字体大小都不同。
数字似乎与FormattedText中的数字不匹配。
答案 0 :(得分:0)
您可以尝试使用像这样的几何变换:
FormattedText text = new FormattedText("Your text",
CultureInfo.CurrentCulture, FlowDirection.LeftToRight,
new Typeface("Arial"), 20, Brushes.Black);
Geometry geometry = text.BuildGeometry(new Point());
double height = geometry.Bounds.Bottom - geometry.Bounds.Top;
但是,这将导致您输入的字符串的高度。这意味着“ abc”的高度比“ ABC”的矮“ Ay”