Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как избежать мерцания при рисовании, Пример кода 
:(
    Опции темы
Baa
Дата 26.8.2002, 03:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 8
Всего: 12



Видел, что возникал вопрос о том, как избежать мерцания...может кого-нить это еще интересует.
http://devstate.by.ru/tutorial/Draw.html


--------------------
"Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande
PM ICQ   Вверх
bavc
Дата 26.8.2002, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 14.8.2002

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



Вопрос то избитый а ответ кроется в двух строчках остальное детали
Рисовать надо на внеэкранной канве + битинг все.
PM MAIL WWW ICQ   Вверх
Baa
Дата 26.8.2002, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 8
Всего: 12



Цитата(bavc @ 26.8.2002, 07:04)
Вопрос то избитый а ответ кроется в двух строчках остальное детали
Рисовать надо на внеэкранной канве + битинг все.

Интересно, зачем было отвечать на это сообщение практически тем же, что в статье написано?


--------------------
"Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande
PM ICQ   Вверх
Temnozor
Дата 27.8.2002, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 134
Регистрация: 27.6.2002
Где: Тюмень

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



Мне кажется, что вопрос раскрыт не полностью.
Мелькание часто возникает даже не из-за того, что кто-то рисует сразу на экране. Часто перед тем как обновить окно, система стирает старое изображение (делает erase). Стирает, по умолчанию это означает, что закрашивает всю client area белым цветом. Вот тут происходит такое мелькание, что аж жуть.
Боролся я с этим просто:
Код

BOOL CMyWnd::OnEraseBkgnd(CDC* pDC)
{
   return TRUE;
}

--------------------
Take a ride on, ride on, on your rotting horse on that deadly ground Take a ride, ride on, on your rotting horse with a pounding sound.
PM   Вверх
Baa
Дата 28.8.2002, 02:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 8
Всего: 12



Дык я делаю то же самое (FillRect(hdc, &rect, (HBRUSH) (COLOR_WINDOW+1));)
т.е. стираю изображение закрашивая.


--------------------
"Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande
PM ICQ   Вверх
Temnozor
Дата 28.8.2002, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 134
Регистрация: 27.6.2002
Где: Тюмень

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



Нет.
Erase работает в момент, когда сгенеренное изображение копируется (BitBlt) на экран и происходит обновление окна.
Система по-тупому удаляет старое изображение (закрашивая белым), и бросает новое. У меня такое постоянно было. (Возможно, такое происходит не всегда, а при определенной системе отрисовки, реализованной в программе - такой как у меня - в OnDraw и OnPaint из рисующих функций у меня только функция BitBlt встречается). И вышеупомянутая мной функция меня спасает.
--------------------
Take a ride on, ride on, on your rotting horse on that deadly ground Take a ride, ride on, on your rotting horse with a pounding sound.
PM   Вверх
Grygory
Дата 6.9.2002, 17:30 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Для рисования более приоритетно использовать функции DirectX или OpenGL.
  Вверх
Tamerlann
Дата 17.11.2002, 07:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 10.11.2002
Где: Минск, Беларусь

Репутация: нет
Всего: 2



Цитата(Guest @ 06.9.2002, 10:30)
Для рисования более приоритетно использовать функции DirectX или OpenGL.

Ага, DirectX, OpenGL... И тогда у программ появляются ситсемные требования вроде: GeForce2-64Mb, 256 RAM чтобы создать простую анимацию. Лучше уж повозиться немного зато сделать Хорошую Прогу.  :sneaky2
--------------------
http://timursdev.blogspot.com/ 
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

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


 




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


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

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