Измерение строки с помощью Graphics.MeasureString - PullRequest
6 голосов
/ 27 марта 2012

Пожалуйста, смотрите мой код:

Graphics grfx = Graphics.FromImage(new Bitmap(1, 1));

System.Drawing.Font f = new System.Drawing.Font("Times New Roman", 10, FontStyle.Regular);

const string text1 = "check_space";
SizeF bounds1 = grfx.MeasureString(text1, f);

const string text2 = "check_space ";
SizeF bounds2 = grfx.MeasureString(text2, f);

Assert.IsTrue(bounds1.Width < bounds2.Width); // I have Fail here!

Интересно, почему мой тест не прошел? Почему текст с пробелом в хвосте НЕ больше по ширине, чем текст без пробела?

ОБНОВЛЕНИЕ: Я понимаю, что обе эти строки не равны. Но, как я понимаю, строка с пробелом должна быть больше по ширине, чем строка без пробела . Не

1 Ответ

12 голосов
/ 27 марта 2012

Вы должны указать это, чтобы измерить конечные пробелы, что не по умолчанию.

Graphics grfx = Graphics.FromImage(new Bitmap(1, 1));

System.Drawing.Font f = new System.Drawing.Font("Times New Roman", 10, FontStyle.Regular);

string text1 = "check_space";
SizeF bounds1 = grfx.MeasureString(text1, f, new PointF(0,0), new StringFormat( StringFormatFlags.MeasureTrailingSpaces ));

string text2 = "check_space ";
SizeF bounds2 = grfx.MeasureString(text2, f, new PointF(0,0), new StringFormat( StringFormatFlags.MeasureTrailingSpaces ) );
...