MeasureString перед масштабированием дает тот же результат

Я хочу добавить текст к изображению. Я делаю текстовое поле для ввода текста, после чего этот текст будет отображаться в графическом объекте. Но размер шрифта не правильный. Если Drawing.Graphics масштабируется путем увеличения/уменьшения масштаба. Поэтому я пытаюсь использовать функцию MeasureString() для правильного определения размера шрифта.

       Private Function GetCorrectFont(ByVal text As String, ByVal f As Font) As Integer
    Dim g As Graphics = _drawArea.CreateGraphics
    Dim widthBefore As Integer = g.MeasureString(text, f).Width
    Dim mx As Matrix = New Matrix()
    mx.Scale(2, 2, MatrixOrder.Append)
    g.Transform = mx
    Dim widthAfter As Integer = g.MeasureString(text, f).Width
    Dim fontSize As Integer = f.Size
    Do While widthAfter < widthBefore
        Dim newFont As New Font(f.FontFamily, fontSize)
        widthAfter = g.MeasureString(text, newFont).Width
        fontSize += 1
    Loop
    Return fontSize
End Function

Но widthBefore и widthAfter имеют одинаковое значение. Почему? И как получить размер шрифта такой же, как в текстовом поле?

0 ответов

Другие вопросы по тегам