Как нарисовать текст во время выполнения - PullRequest
0 голосов
/ 22 октября 2010

По сути, я делаю приложение для рисования, очень похожее на MSPaint.Идея заключается в том, что пользователь нажимает в любом месте формы и должен иметь возможность писать текст в элементе управления.И после этого этот текст должен отображаться графическим методом g.drawstring.

1 Ответ

3 голосов
/ 04 ноября 2010

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

Написание текста
Создание Form и добавьте к нему элемент управления TextBox.Убедитесь, что он скрыт по умолчанию.Переопределите метод OnMouseClick вашего Form и добавьте код, который проверяет, является ли TextBox видимым, а если нет, показывает его и помещает фокусчтобы пользователь мог ввести свой текст.Если TextBox уже виден, код должен его скрыть и создать вместо него новый UserControl, показывающий текст (подробности этого см. Ниже UserControl).

Также добавьте обработчик событий в TextBox, чтобы, если пользователь нажимает клавишу Esc, он отменял редактирование и, если он нажимал клавишу Enter, текстпринимается, и UserControl создается.

Отображается текст
Создайте UserControl и убедитесь, чтоUserPaint и Opaque стили установлены в его конструкции (см. SetStyle - вы также можете рассмотреть OptimizedDoubleBuffer и AllPaintingInWmPaint, поскольку это может уменьшить мерцание, хотя для этого требуется дополнительный код рисования).

Переопределите метод OnPaint в вашем UserControl и реализовать код для рисования строки (помните, вам также понадобится способ установить текст на элементе управления).

Заключение
Если выподключи все это, шоУ вас есть что-то, что соответствует вашим требованиям.Для дальнейших экспериментов подумайте, как можно устранить необходимость в UserControl.Удачи и веселья!

...