Есть ли способ рассчитать реальную высоту шрифта? - PullRequest
0 голосов
/ 27 декабря 2018

Я столкнулся с ситуацией, когда текст не выравнивается должным образом, используя вертикальное центрирование.Особенно, когда размер шрифта большой (т.е. 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.

1 Ответ

0 голосов
/ 27 декабря 2018

Вы можете попробовать использовать преобразование геометрии следующим образом:

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»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...