Изменить размер прямоугольника на основе текста - PullRequest
0 голосов
/ 14 мая 2010

Я работаю над пользовательским элементом управления, где я использую Rectangle, чтобы показать некоторые данные. Теперь допустим, что ширина и высота прямоугольника установлены на 100.

Если у меня меньше данных, тогда все в порядке, я могу нарисовать их с помощью метода DrawString. Но иногда данные больше и поэтому обрезаются.

Я пытался использовать метод MeasureString, но он не получает правильные значения. Есть ли способ узнать, какой будет размер строки, [длина и высота], если она должна быть показана в прямоугольнике шириной 100 пикселей. Я имею в виду, что высота может быть увеличена, но не ширина, чтобы я мог использовать правильную высоту строки, чтобы она полностью отображалась в этом прямоугольнике.

Ответы [ 2 ]

0 голосов
/ 29 июня 2010

Установите для высоты прямоугольника значение 0. И после того, как мы выполним MeasureString, мы можем найти высоту строки, которая может быть помещена в этот прямоугольник указанной ширины. задайте эту высоту прямоугольнику для рисования, а затем нарисуйте в нем строку.

http://www.tigraine.at/2009/01/03/gdi-drawing-string-with-word-wrap/

0 голосов
/ 14 мая 2010

Похоже, вам нужно преодолеть две разные проблемы

  1. Точное измерение строки . Для этого смотрите TextRenderer.MeasureText , который даст вам ожидаемый размер в пикселях.

    В качестве альтернативы можно нарисовать строку и затем измерить ее самостоятельно, отыскивая левый и правый столбцы на изображении, которые не содержат цвет вашего текста. Для этого вы можете использовать GetPixel . Этот метод потребует больше кода, и он будет медленнее, поэтому я бы не рекомендовал его.

  2. Максимизация размера нарисованной строки при подгонке ее в ширину 100 . Для этого вы можете просто измерить строку в цикле, чтобы найти размер шрифта, где он превышает 100 пикселей. Догадайся и работай оттуда.

...