TextRenderer.MeasureText return Width = 0 для символа "&" - PullRequest
2 голосов
/ 16 сентября 2011

Все в названии. Я пытаюсь создать свою собственную систему шрифтов OpenGL, и мне нужно получить размер каждого символа, который я хочу включить в текстуру Sprite. Все работает хорошо и точно, за исключением символа «&» (ascii 38). Даже если я изменю шрифт, этот символ всегда возвращает ноль для ширины. Рост хорош.

Самое странное, что если я попытаюсь измерить конкатенацию "&&" (Chr (38) и Chr (38)), результат будет хорошим! Я не проверял, имеет ли та же самая точка кода в другом диапазоне того же шрифтового продукта ту же ошибку, поэтому я не знаю, будет ли обходной путь ", если char равен" 38 ", проверить размер на" 38 + 38 " всегда работай.

EDIT: Извини, я так глуп. Я совершенно забыл сказать, что я нахожусь под VB.Net (но могу понимать C #), и я использую OpenGL с OpenTK для привязки. TextRenderer - это класс GDi +. Я использую это для создания моей текстуры шрифта. Это действительно не проблема OpenGL.

1 Ответ

5 голосов
/ 16 сентября 2011

Символ & используется в контрольном тексте для объявления следующего символа как сочетания клавиш. Например, если элемент управления с текстом «E & xit» отображает «Выход» с подчеркнутой «х» и активируется, когда пользователь нажимает Alt + X.

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

TextRenderer.MeasureText(text, font, Size.Empty, TextFormatFlags.NoPrefix)
...