![]() |
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]() ![]() ![]() |
|
Oreshin |
|
|||
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 31.5.2007 Репутация: нет Всего: нет |
У меня проблема с мерцанием, вроде ба как понял надо битмап и битблт юзать.
Но что то у меня ни как не получается, у меня теперь рисуется все черно-белое и мерцание как было так и осталось. Вот код:
|
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 7 Всего: 459 |
Разумеется, ведь рисовать нужно на битмапе, а потом битмап рисовать на окне.
и дальше по тексту везде нужно заменить. т.е. все рисовать на невидимой поверхности, которую потом рисовать одной операцией. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 12 Всего: 92 |
добавлю
насколько я помню правильно так: CreateCompatibleBitmap(hdc //... те создавать битмап совместимый с исходным контекстом, а то проблема с глубиной цвета может быть. явно лишнее |
|||
|
||||
Oreshin |
|
|||
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 31.5.2007 Репутация: нет Всего: нет |
Сделал соответствующие поправки в коде. Теперь у меня на экране появляются цветные элементы которые я рисую, но к сожалению вся область за исключением тех элементов каторые я рисую закрашивается черным цветом
![]() ![]() с частотой 100 Гц. Вот код после исправлений:
|
|||
|
||||
Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: 8 Всего: 26 |
Так сделай FillSolidRect() - нужным цветом
![]() Добавлено через 1 минуту и 34 секунды И обработай WM_ERASEBKGND ![]() -------------------- ????? ??, ??????? ?????. ![]() |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 7 Всего: 459 |
Это все делается в обработчике WM_PAINT?
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: 8 Всего: 26 |
FillSolidRect() - в WM_PAINT
WM_ERASEBKGND - return true; ![]() -------------------- ????? ??, ??????? ?????. ![]() |
|||
|
||||
zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 12 Всего: 92 |
Andrey44, я думаю Alexeis в курсе, и не у тебе спрашивал
![]() |
|||
|
||||
Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: 8 Всего: 26 |
![]() ![]() Извиняюсь за пост не по теме ![]() -------------------- ????? ??, ??????? ?????. ![]() |
|||
|
||||
Oreshin |
|
|||
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 31.5.2007 Репутация: нет Всего: нет |
Да это все в WM_PAINT делается, а то что мне посоветовали я завтра на работе с утра попробую и напишу результат.
|
|||
|
||||
Oreshin |
|
|||
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 31.5.2007 Репутация: нет Всего: нет |
Стал рисовать и то что я в ПАИНТЕ рисую и те элементы которые в КРЕАТЕ после hdc = GetDC(hwnd) на hdc = BeginPaint(hwnd,&sp);
И мерцания по меньше стало после добавления SetForegroundWindow(hwnd); Сейчас сделаю фон как советовал Andrey44 через FillSolidRect(), а точнее через FillRect() т.к. если я не ошибаюсь то FillSolidRect() в WinAPI нет ![]() Исправленный код:
|
|||
|
||||
zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 12 Всего: 92 |
Oreshin, WM_ERASEBACKGROUND (забыл как дословно, догадаешься) обработал?
нужно просто TRUE вернуть. PS о чем говорил Andrey44. Это сообщение отредактировал(а) zkv - 11.9.2007, 09:25 |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 7 Всего: 459 |
Все еще рисуется на окне, а не на битмапке. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
Oreshin |
|
|||
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 31.5.2007 Репутация: нет Всего: нет |
Теперь все на битмапе рисую, и кстати говоря решил пока что не использовать WM_ERASEBKGND, а то с ним глючит сильно. Я фон по методу FillRect() сделал и вроде все нормально пока что
![]() НО появилась фигня какая-то ![]() Я обнавляю изображение через InvalidateRact() с частотой 100 Гц и спустя полторы секунды у меня перестае отображаться bitmap ![]() ![]() А может у кого ни то есть примерчик с решением проблемы мерцания ![]() ![]() |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 7 Всего: 459 |
Все выделенные битмапы, кисти, иконки должны быть удалены, а контексты освобождены по выходу.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Системное программирование и WinAPI" | |
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |