Я использую GDI + на C++. (Эта проблема может существовать и на C#).MeasureString() накладывает текст слева и справа
Я замечаю, что всякий раз, когда я вызываю Graphics :: MeasureString() или Graphics :: DrawString(), строка заполняется пустым пространством слева и справа.
Например, если я использую шрифт Courier (не курсив!), И я измеряю «P», я получаю 90, но «PP» дает мне 150. Я ожидал бы, что моноширинный шрифт даст ровно вдвое большую ширину для «ПП».
Мой вопрос: это намеренное или задокументированное поведение и как его отключить?
RectF Rect(0,0,32767,32767);
RectF Bounds1, Bounds2;
graphics->MeasureString(L"PP", 1, font, Rect, &Bounds1);
graphics->MeasureString(L"PP", 2, font, Rect, &Bounds2);
margin = Bounds1.Width * 2 - Bounds2.Width;
Я получаю лучшие результаты с помощью класса TextRenderer. – Bitterblue
TextRenderer был именно тем, что мне нужно в аналогичной ситуации – Rob
TextRenderer работал намного лучше для меня тоже – Migs