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

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

Как избежать мигания при прорисовке? [D6, XP]


Страницы:   1 2

Mr tray ©   (2006-11-09 21:38:00) 

На onmousemove я поставил repaint, и код, рисующий некоторую картинку. Но всё окно при каждом выполнении этого кода "мигает". То есть сначала показывается чистое окно, а потом только прорисовывается картинка. Как избежать мигания?


guav   (2006-11-09 23:14:00) [21]

> На onmousemove я поставил repaint

Не луяше ли Invalidate ?
И рисовать, как уже сказано, в обработчике OnPaint.
Можно конечно рисовать и в onmousemove (если осторожно), но тогда repаint там точно не нужно.


Percent   (2006-11-09 23:10:00) [22]

Что ты рисуешь, потребитель?


Mr tray   (2006-11-09 23:08:00) [23]

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


Percent   (2006-11-09 22:10:00) [24]

На onmousemove я поставил repaint, и код, рисующий некоторую картинку

Код отрисовки контрола, должен располагаться в методе Paint (или обработчике OnPaint). Нигде в другом месте этот код располагаться не должен. Табу.

То есть сначала показывается чистое окно

Такое заявление - лишь признание того, что ты не контролируешь поведение своей программы.

Как избежать мигания?

1. Не давать перерисовываться чистому окну.
2. Рисовать в соответствующем методе.
3. Отрисовывать только то, что реально требует отрисовки (или затерлось, или изменилось).
4. DoubleBuffered := true; (только в крайнем случае)
5. ControlStyle := ControlStyle + [csOpaque];

И что за картинка вообще? Растр?
Установи ее в качестве кисти формы и забудь про ручную отрисовку.
Или используй TImage.

А вообще - методов очень много. А ты даже строчки кода не привел...


Ketmar   (2006-11-09 22:10:00) [25]

обрабатывать, например, WM_ERASEBKGND


Страницы:   1 2

Наверх

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