Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как рисовать элементы в splitContainer'e? (Язык C#)

20K
30 октября 2006 года
Marden
4 / / 25.10.2006
Пишу html-браузер. Написал парсинг и столкнулся с проблемой: необходимо рисовать в splitContainer'e на форме элементы, лининии и прочее, а также текст различными цветами/шрифтами. Как это лучше сделать?

Заранее благодарен.
273
31 октября 2006 года
3A3-968M
1.2K / / 22.12.2005
[quote=Marden]Пишу html-браузер. Написал парсинг и столкнулся с проблемой: необходимо рисовать в splitContainer'e на форме элементы, лининии и прочее, а также текст различными цветами/шрифтами. Как это лучше сделать?

Заранее благодарен.[/quote]
Создаёшь GDI-объект для этого контрола вызовом CreateGraphics и рисуешь и текст и линии и всё остальное. Можно создать производный от SplitContainer класс и ввести дополнительный функионал для рисования в этом компоненте. Например, так:
Код:
[SIZE=2][COLOR=#0000ff][FONT=Courier New]public [/FONT][/COLOR][/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff]class [/COLOR][/SIZE][SIZE=2][COLOR=#008080]ExtendedSplitContainer[/COLOR][/SIZE][SIZE=2] : [/SIZE][SIZE=2][COLOR=#008080]SplitContainer
[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New]{[/FONT]
[/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff]private [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]readonly [/COLOR][/SIZE][SIZE=2][COLOR=#008080]Graphics[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New] m_canvas;[/FONT][/SIZE]
[SIZE=2]
[/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff] public[/COLOR][/SIZE][SIZE=2] ExtendedSplitContainer([/SIZE][SIZE=2][COLOR=#008080]Graphics[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New] canvas)[/FONT]
[FONT=Courier New] : [/FONT][/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff]base[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New]()[/FONT]
[FONT=Courier New] {[/FONT]
[FONT=Courier New]   m_canvas = _canvas;[/FONT]
[FONT=Courier New] }[/FONT]
 
[/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff] protected [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]override [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]void [/COLOR][/SIZE][SIZE=2]OnPaint([/SIZE][SIZE=2][COLOR=#008080]PaintEventArgs[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New] e)[/FONT]
[FONT=Courier New] {[/FONT]
[FONT=Courier New]   e.Graphics = m_canvas;[/FONT]
[/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff]   base[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New].OnPaint(e);[/FONT]
[FONT=Courier New] }[/FONT]
 
[/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff] public [/COLOR][/SIZE][SIZE=2][COLOR=#008080]Graphics[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New] Canvas[/FONT]
[FONT=Courier New] {[/FONT]
[/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff]   get[/COLOR][/SIZE][SIZE=2] { [/SIZE][SIZE=2][COLOR=#0000ff]return[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New] m_canvas; }[/FONT]
[/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff]   set[/COLOR][/SIZE][SIZE=2] { OnPaint([/SIZE][SIZE=2][COLOR=#0000ff]new [/COLOR][/SIZE][SIZE=2][COLOR=#008080]PaintEventArgs[/COLOR][/SIZE][SIZE=2](m_canvas = [/SIZE][SIZE=2][COLOR=#0000ff]value[/COLOR][/SIZE][SIZE=2], [/SIZE][SIZE=2][COLOR=#0000ff]this[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New].ClientRectangle)); }[/FONT]
[FONT=Courier New] }[/FONT]
[FONT=Courier New]}[/FONT]
[/SIZE]

Теперь через объект Canvas можно рисовать на контейнере.
20K
31 октября 2006 года
Marden
4 / / 25.10.2006
3A3-968M, спасибо. Ответ, оказывается, под носом лежал. Пойду читать в MSDN'e про GDI. =)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог