1

При работе над алгоритмом визуализации текста я наткнулся на странное поведение метода Graphics.MeasureString().System.Drawing.Graphics отделка конца строки?

Кажется, он внутренне обрезает конец строки.

g.MeasureString("d", font).Width //is 13.289278 
g.MeasureString("d ", font).Width //is 13.2892771 
g.MeasureString(" d", font).Width //is 17.4858913 
//font.Size = 11; font.FontFamily = "Arial"; 

Может кто-нибудь объяснить это поведение?

ответ

2

Как из MSDN описания флага формата MeasureTrailingSpaces:

По умолчанию границы прямоугольника, возвращаемый методом MeasureString исключает пространство в конце каждой строки. Установите этот флаг для включения в пространство измерения.

Так что, если вы предоставите этот флаг - результат будет тот же

var fmt = new StringFormat(StringFormatFlags.MeasureTrailingSpaces); 
var x2 = g.MeasureString("d ", font, 0, fmt).Width; 
var x3 = g.MeasureString(" d", font, 0, fmt).Width; 
Смежные вопросы