Пользовательские формы текстового поля / редактировать контроль в.net?

Я ищу способ отображать и редактировать текст внутри поля специальной формы (например, круга). Текст должен использовать как можно больше допустимого пространства, поэтому простого размещения поля редактирования внутри фигуры недостаточно,

Требования:

  1. Учитывая GraphicsPath и строку, нарисуйте текст в пути. Если текст переполняется, обрезать или вызвать событие.
  2. Разрешить пользователю редактировать текст в GraphicsPath.
  3. Весь интеллект стандартного текстового поля в отношении разрывов слов, переноса слов, локализации.

Там, кажется, нет каких-либо элементов управления, которые соответствуют этим требованиям. Вероятно, для этого требуются API-интерфейсы низкоуровневой компоновки линий, и я не могу найти документацию в MSDN о таких API-интерфейсах в Windows.

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

Заранее спасибо!

1 ответ

Поскольку вы упомянули, что это высокоточный инструмент, я бы полностью избегал использования встроенных методов TextRenderer, поскольку у них есть проблемы с точностью и согласованностью.

Что касается формирования элемента управления редактирования, вы имеете в виду изменение его формы с прямоугольника на круг, или элемент управления по-прежнему будет занимать прямоугольную область? Если первое, вы можете изменить свойство Region или P/Invoke семейство SetWindowRgn.

Другие вопросы по тегам