![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Zhaw |
|
|||
|
Unregistered |
Помогите, пожалуйста, с графикой разобраться...
Исходные данные: Необходимо отрисовывать на компоненте VCL (я использую TImage) быстро меняющуюся картинку (порядка 10-30 Гц). Рисую как в книжках умных пишут - сначала на TBitMap в памяти - потом оный BitMap копирую в TImage (с помощью Assign, Draw, CopyRect и BitBlt (API)). При создании TImage в его ControlState добавлен csOpaque Проблема вот в чём:По какому-то случайному закону экран промаргивает, как при перерисовке непосредственно по TImage. Причём промаргивание нерегулярное, от частоты обновления не зависит (а только от кол-ва перерисовок - промаргивает на 20-30 -ю перерисовку). Полоса промаргивания - 30% от всего рисунка по высоте и шириной на весь рисунок. Оная полоса промаргивания обычно при каждой перерисовке спускается сверху вниз, уходит за экран и потом, через 20-30 перерисовок повторяется. Вопрос: Как избавится от оного моргания, не прибегая к DirectDraw методам ?? |
|||
|
||||
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 48 Всего: 207 |
Думаю что никак, функции работы с Canvas медленные и для обновления с указанной частотой не годятся
-------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
Дык ведь в том и проблема, что от частоты отрисовки (см. пост) не зависит. Я когда частоту обновления ставлю 2Гц происходит то-же самое, только подождать нужно дольше (те-же 20-30 циклов)..... Я вот думаю, что где-то путаю размеры виртуального BitMap'a и реального TImage (в смысле я их ставлю одинаковыми, а нужно - РАЗНЫми или ещё что-нить)... Какая-то чётная ошибка.. |
|||
|
||||
| stab |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: 14 Всего: 48 |
Поставь у родительского компонента картинки DoubleBuffered := True; от этого работает медленее, но нет мерцания. Род. компонент должен быть наследником от TWinControl, короче который в себе другие компоненты содержать может (TForm, TPanel, ...)
Есть еще вариант рисовать на TPainBox, но тогда тебе надо будет хранить битмап самому и каждый раз заново при OnPaint перерисовывать содержимое TPainBox. За-то будет быстрее чем DoubleBuffered. -------------------- 6, 6, 6 - the number of the beast. |
|||
|
||||
| Zhaw |
|
|||
|
Unregistered |
Огромное Thanks! Обязательно попробую! |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |