Пользовательские формы текстового поля / редактировать контроль в.net?
Я ищу способ отображать и редактировать текст внутри поля специальной формы (например, круга). Текст должен использовать как можно больше допустимого пространства, поэтому простого размещения поля редактирования внутри фигуры недостаточно,
Требования:
- Учитывая GraphicsPath и строку, нарисуйте текст в пути. Если текст переполняется, обрезать или вызвать событие.
- Разрешить пользователю редактировать текст в GraphicsPath.
- Весь интеллект стандартного текстового поля в отношении разрывов слов, переноса слов, локализации.
Там, кажется, нет каких-либо элементов управления, которые соответствуют этим требованиям. Вероятно, для этого требуются API-интерфейсы низкоуровневой компоновки линий, и я не могу найти документацию в MSDN о таких API-интерфейсах в Windows.
Это для высокоточного инструмента, поэтому мы готовы приложить немало усилий, чтобы получить то, что нам нужно.
Заранее спасибо!
1 ответ
Поскольку вы упомянули, что это высокоточный инструмент, я бы полностью избегал использования встроенных методов TextRenderer, поскольку у них есть проблемы с точностью и согласованностью.
Что касается формирования элемента управления редактирования, вы имеете в виду изменение его формы с прямоугольника на круг, или элемент управления по-прежнему будет занимать прямоугольную область? Если первое, вы можете изменить свойство Region или P/Invoke семейство SetWindowRgn.