![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Почему мерцает Image? [D7, WinXP]
dmitrlast © (2006-04-21 04:58:00)При добавлении часов в программу мерцает Image согласно секундам. Как этого избежать?
DVM (2006-09-04 11:07:00) [1]Если это VCL то просто включить двойную буферизацию и не заниматься ерундой. Обновлять часы через Invalidate()
Если VCL не используется, то рисовать все в WM_PAINT и просто вызывать обработчик периодически.
Stexen (2006-08-30 19:40:00) [2]
> Почему мерцает Image
Потому что это TImage
Eraser (2006-08-29 20:36:00) [3]> [0] dmitrlast © (21.04.06 04:58)
еще может помочь перекрытие сообщения WM_ERASEBKGND, имеет смысл использовать, если окно перерисовывется полностью при каждом вызове метода прорисовки.
AlexACD (2006-08-29 20:33:00) [4]Ага! Есть связь значит..
Отвечаю почему мерцает:
Есть такое сообщение каждому окошку виндовоза: WM_PAINT. Так вот по этому сообщению функция обработки сообщений окна должна рисовать окно. Класс Image при перерисовке стирает сначала содержимое (своего окошка), а потом рисует туда по новой. Избежать можно следующим образом: Сделай Имэйдж невидимым, и по таймеру перекидывай содержимое Image на канвас окна (главного или тоже Image, но видимого) с помошью BitBlt (Bit Block Transfer). По-моему, даже у канваса есть такой метод.
AlexACD (2006-08-29 20:24:00) [5]Проверка связи..
AlexACD (2006-08-29 20:22:00) [6]Проверка связи..
grisme (2006-04-24 05:30:00) [7]включи или организуй двойную буферизацию. {если хочешь, тройную ;)}
Серджинйо (2006-04-24 02:41:00) [8]Не добавлять часы...
SamBrook (2006-04-21 10:31:00) [9]Добавьте в OnCreate формы
Image.parent.doublebuffered:=true;
antonn (2006-04-21 06:30:00) [10]dmitrlast © (21.04.06 4:58)
При добавлении часов
каких?