这是完整的应用程序xaml:
< Window x:Class="WpfApplication30.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow"
Width="525"
Height="350">
< Border VerticalAlignment="Center"
BorderBrush="Green"
BorderThickness="1">
< TextBlock Text="HELLO WORLD!"
VerticalAlignment="Center"
FontSize="16" />
</Border>
</Window>
Run Code Online (Sandbox Code Playgroud)
当系统字体设置为125%时,文本不在边框的中心.顶部边框和文本之间有7个像素,底部边框和文本之间只有4个像素.我该如何解决?
UPD:补充道
UseLayoutRounding="True"
SnapsToDevicePixels="True"
Run Code Online (Sandbox Code Playgroud)
但是diffrenece仍然在这里:8px和6px
小智 3
字体垂直居中很复杂,因为它将TextBlock与所提供空间的中心对齐,以便所选字体中的任何字符都适合该区域。关于其原因的基本概述可以在维基百科基线(排版)文章中找到
您可以尝试使用以下方法来补偿特定字体的指标
\n\nGetEmHeight(FontStyle) GetCellAscent(FontStyle) GetCellDescent(FontStyle) GetLineSpacing(FontStyle) 在课堂上FontFamily。并调整 的位置TextBlock。
来源:如何:获取字体规格
\n\n但我真的建议不要这样做,因为有些角色可能会使用这样的空间\xc3\x81,并且j具有不同的高度和线条位置。
使用类似monospaced打印到边框中间的字体,您可能会有更好的默认布局体验。ConsolasHELLO WORLD!