Почему тормозит HDC при WM_PAINT
Модераторы: Duncon, Hawk, Romeo, Eugie
Вопрос почему тормозит отрисовка WM_PAINT при работе с HDC... Можно ли как нибудь этого избежать... Почему происходит мигание...
P.S. Пользуюсь "теневой памятью" для более быстрой генерации изображения... Ну не пользоваться же Direct Draw??? Как это реализовано в Delphi... Там это очень быстро и не мигает...
P.S. Пользуюсь "теневой памятью" для более быстрой генерации изображения... Ну не пользоваться же Direct Draw??? Как это реализовано в Delphi... Там это очень быстро и не мигает...
- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
В Delphi TImage пишет всё в память, а при инвалидации отрисовывает то, что ранее написал.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
Если нужна суперскорость - HDC всё равно не подходит. Либо Direct Show, либо OpenGL.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Я поступаю точно так же... Я же сказал, что пользуюсь теневой памятью... Но все равно даже на пеньках видно промигивание, которого нет под Delphi... Может есть еще какие способы??? Там он не ждет обратного хода луча или еще чего-нибудь???Romeo писал(а):В Delphi TImage пишет всё в память, а при инвалидации отрисовывает то, что ранее написал.
"Теневая память" - это compatible DC что ли? Просто словосочетание shadow memory вызывает другие устойчивые ассоциации.
Насчет мигания, попробуй обрабтывать WM_ERASEBACKGROUND, т.е. просто возвращай TRUE (тогда не будет вызван стандартный обработчик, закрашивающий клиентскую область оконной кистью).
Насчет мигания, попробуй обрабтывать WM_ERASEBACKGROUND, т.е. просто возвращай TRUE (тогда не будет вызван стандартный обработчик, закрашивающий клиентскую область оконной кистью).
- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
Есть также выход создавать окно с "собственным" DC.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Не совсем понял... Это как?Romeo писал(а):Есть также выход создавать окно с "собственным" DC.
-
- Сообщения: 497
- Зарегистрирован: 17 фев 2004, 11:26
- Откуда: Ленинград (который Город на Неве)
- Контактная информация:
Есть такой класс - CMemDC называется. Очень удобно и без фликов.Vitold S писал(а):Не совсем понял... Это как?Romeo писал(а):Есть также выход создавать окно с "собственным" DC.
http://www.codeguru.com/Cpp/misc/misc/f ... .php/c389/
Погляди, как это сделано.
"Особое внимание начинающих аквариумистов хотим обратить на то, что рыбки никогда не спят на спинке!" (c)
viel spass, DeeJayC
viel spass, DeeJayC
- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
На том, что нужно писать в память, мы уже и так сошлись. Естественно это нужно делать через Compatible DC. Всевозможные плюсовые враперы только приветствуются. Говоря же о "собственном" DC я имел в виду стиль класса окна CS_OWNDC. О нём можно подробнее знать в MSDN.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.