Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема графики, Промаргивание при перерисовке TImage 
:(
    Опции темы
Zhaw
  Дата 29.1.2003, 19:02 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Помогите, пожалуйста, с графикой разобраться...
Исходные данные: Необходимо отрисовывать на компоненте VCL (я использую TImage) быстро меняющуюся картинку (порядка 10-30 Гц). Рисую как в книжках умных пишут - сначала на TBitMap в памяти - потом оный BitMap копирую в TImage (с помощью Assign, Draw, CopyRect и BitBlt (API)). При создании TImage в его ControlState добавлен csOpaque
Проблема вот в чём:По какому-то случайному закону экран промаргивает, как при перерисовке непосредственно по TImage. Причём промаргивание нерегулярное, от частоты обновления не зависит (а только от кол-ва перерисовок - промаргивает на 20-30 -ю перерисовку). Полоса промаргивания - 30% от всего рисунка по высоте и шириной на весь рисунок. Оная полоса промаргивания обычно при каждой перерисовке спускается сверху вниз, уходит за экран и потом, через 20-30 перерисовок повторяется.
Вопрос: Как избавится от оного моргания, не прибегая к DirectDraw методам ??

  Вверх
Vit
Дата 29.1.2003, 22:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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
PM MAIL WWW ICQ   Вверх
Guest
Дата 29.1.2003, 22:56 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(Vit @ 29.1.2003, 14:32)
Думаю что никак, функции работы с Canvas медленные и для обновления с указанной частотой не годятся

Дык ведь в том и проблема, что от частоты отрисовки (см. пост) не зависит. Я когда частоту обновления ставлю 2Гц происходит то-же самое, только подождать нужно дольше (те-же 20-30 циклов).....
Я вот думаю, что где-то путаю размеры виртуального BitMap'a и реального TImage (в смысле я их ставлю одинаковыми, а нужно - РАЗНЫми или ещё что-нить)... Какая-то чётная ошибка.. confused.gif
  Вверх
stab
Дата 29.1.2003, 23:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 14
Всего: 48



Поставь у родительского компонента картинки DoubleBuffered := True; от этого работает медленее, но нет мерцания. Род. компонент должен быть наследником от TWinControl, короче который в себе другие компоненты содержать может (TForm, TPanel, ...)

Есть еще вариант рисовать на TPainBox, но тогда тебе надо будет хранить битмап самому и каждый раз заново при OnPaint перерисовывать содержимое TPainBox. За-то будет быстрее чем DoubleBuffered.


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
Zhaw
Дата 30.1.2003, 00:00 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(cully @ 29.1.2003, 15:52)
Поставь у родительского компонента картинки DoubleBuffered := True; от этого работает медленее, но нет мерцания. Род. компонент должен быть наследником от TWinControl, короче который в себе другие компоненты содержать может (TForm, TPanel, ...)

Есть еще вариант рисовать на TPainBox, но тогда тебе надо будет хранить битмап самому и каждый раз заново при OnPaint перерисовывать содержимое TPainBox. За-то будет быстрее чем DoubleBuffered.

Огромное Thanks! Обязательно попробую! smile.gif
  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0610 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.