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 имеют одинаковое значение. Почему? И как получить размер шрифта такой же, как в текстовом поле?