Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Промаргивание экрана (TImage)

2.1K
29 января 2003 года
zhaw
14 / / 29.01.2003
Помогите, пожалуйста, с графикой разобраться...
Исходные данные: Необходимо отрисовывать на компоненте VCL (я использую TImage) быстро меняющуюся картинку (порядка 10-30 Гц). Рисую как в книжках умных пишут - сначала на TBitMap в памяти - потом оный BitMap копирую в TImage (с помощью Assign, Draw, CopyRect и BitBlt (API)). При создании TImage в его ControlState добавлен csOpaque
Проблема вот в чём:По какому-то случайному закону экран промаргивает, как при перерисовке непосредственно по TImage. Причём промаргивание нерегулярное, от частоты обновления не зависит (а только от кол-ва перерисовок - промаргивает на 20-30 -ю перерисовку). Полоса промаргивания - 30% от всего рисунка по высоте и шириной на весь рисунок. Оная полоса промаргивания обычно при каждой перерисовке спускается сверху вниз, уходит за экран и потом, через 20-30 перерисовок повторяется.
Тестовый исходник в зип-е подсоединён (там не основная программа, но абсолютно та-же ситуация и те-же симптомы)
Вопрос: Как избавится от оного моргания, не прибегая к DirectDraw методам???
3.2K
29 января 2003 года
Alexsandr
2 / / 28.01.2003
Цитата:
Originally posted by zhaw
Помогите, пожалуйста, с графикой разобраться...
Исходные данные: Необходимо отрисовывать на компоненте VCL (я использую TImage) быстро меняющуюся картинку (порядка 10-30 Гц). Рисую как в книжках умных пишут - сначала на TBitMap в памяти - потом оный BitMap копирую в TImage (с помощью Assign, Draw, CopyRect и BitBlt (API)). При создании TImage в его ControlState добавлен csOpaque
Проблема вот в чём:По какому-то случайному закону экран промаргивает, как при перерисовке непосредственно по TImage. Причём промаргивание нерегулярное, от частоты обновления не зависит (а только от кол-ва перерисовок - промаргивает на 20-30 -ю перерисовку). Полоса промаргивания - 30% от всего рисунка по высоте и шириной на весь рисунок. Оная полоса промаргивания обычно при каждой перерисовке спускается сверху вниз, уходит за экран и потом, через 20-30 перерисовок повторяется.
Тестовый исходник в зип-е подсоединён (там не основная программа, но абсолютно та-же ситуация и те-же симптомы)
Вопрос: Как избавится от оного моргания, не прибегая к DirectDraw методам???




Действительно такая проблема существует и проявляется когда с высокой частотой обновляется компонент Image или любой другой компонент. Для того чтобы её решить не нужно переходить к DirectX или OpenGl, попробуй рисовать прямо на форму.

2.1K
30 января 2003 года
zhaw
14 / / 29.01.2003
Цитата:
Originally posted by Alexsandr

Действительно такая проблема существует и проявляется когда с высокой частотой обновляется компонент Image или любой другой компонент. Для того чтобы её решить не нужно переходить к DirectX или OpenGl, попробуй рисовать прямо на форму.


Спасибо за подсказку. Я пробовал похожее - рисовал на TPanel - тоже не очень. Зато (как посоветовали умные люди) выставил св-во Double_buffered у компонента родителя (панельки под TImage'ем) в True и всё стало ОК. Чего и вам желаю!

2.0K
05 февраля 2003 года
davyd
26 / / 02.02.2003
А я рисовал прямо по канве формы и все прекрасно работало и не промаргивало. (на тимаже промаргивало). И ехе меньше получается. Меньше компонент больше результата.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог