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