Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Работа с Canvas [D6, D7, Win2k, WinXP]


shu_3d ©   (2003-01-14 15:31:00) 

Приветствую!
Вот такая вот проблемка:
имеется собственный компонент порожден от TCustomControl,
в его процедуре Paint настраивается mapping mode, а потом вызывается пользовательская обработка сообщения OnPaint;
все работает прекрасно, но вот если пользователь вызывает методы canvasa этого компонента не в процедуре OnPaint, а где-нить в другом месте, настройки canvasa опять сбиваются на mm_text. Почему такое происходит? Немного порылся в исходниках VCL, так ничего и не нашел.Спасибо за помощь.


REA   (2003-01-15 11:41:00) [1]

Может попробовать наоборот? Перед вызовом рисования наверняка будет затребован контекст. Как то это отследить и подсунуть уже измененный. Можно сделать другой Canvas (не TControlCanvas). А вообще у меня получилось MM_TEXT сделать - в других режимах все точнее рисуется (в абсолютных величинах), но грубее - некрасиво на экране.


shu_3d   (2003-01-15 11:36:00) [2]

Порылся еще немного, нашел я, что в процедуре TWinControl.MainWndProc вызывается FreeDeviceContexts, который как раз и сбрасывает мои настройки. Возникает вопрос: как бы попроще и главное корректно сделать так, чтобы в конце работы процедуры контекст не освобождался?


Наверх

Титульная страница Поиск, карта сайта Написать письмо