C # рисование текста - PullRequest
       3

C # рисование текста

0 голосов
/ 03 марта 2011
gfx.DrawString(
    thisTempLabel.LabelText,
    new Font("Arial", (float)thisTempLabel.fontSize),
    Brushes.Black,
    new PointF(thisTempLabel.x, thisTempLabel.y)
    );

Это прекрасно работает, за исключением того, что я храню размер шрифта (thisTempLabel.fontSize) в пикселях.Я не могу на всю жизнь понять, как преобразовать их (возможно, невозможно) или что сделать, чтобы решить эту проблему.

Они выходят вроде как правильно, но не совсем в правильном положении ислишком большой.

Точность очень важна.

1 Ответ

2 голосов
/ 03 марта 2011

Я думаю, что проблема может заключаться в том, что используемый вами конструктор ожидает, что размер будет в точках:

public Font(FontFamily family, float emSize)

emSize
Тип: System.Single
Размер em, в пунктах, нового шрифта.

Похоже, что вы можете использовать другую перегрузку , которая принимает GraphicsUnit параметр, который можно установить на GraphicsUnit.Pixel:

gfx.DrawString(
    thisTempLabel.LabelText,
    new Font("Arial", (float)thisTempLabel.fontSize, GraphicsUnit.Pixel),
    Brushes.Black,
    new PointF(thisTempLabel.x, thisTempLabel.y)
);

Примечаниечто вы устанавливаете размер em, который примерно равен высоте символа "M".

...