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

Ваш аккаунт

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

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

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

Обновление окна при рисовании

17K
07 ноября 2006 года
_pasha
10 / / 26.10.2006
Проблема: вывожу в окно динамическую диаграму, которая обновляется таймером. Рисую примитивами GDI. При обновлении изображение "дрожит". Существут ли более еффективные способы вывода подобной примитивной графики, не используя директиксы и пр.
240
07 ноября 2006 года
aks
2.5K / / 14.07.2006
Насколько дродит?
-Не обновляй постоянно когда не надо.
-Храни копию изображения в виртуальном контексте, и рисуй только туда.
При обновление делай только копирование (BitBlt) уже в окно из той областии.
547
07 ноября 2006 года
Hydra
488 / / 20.06.2006
Обрабатывай событие WM_PAINT, посылаемое форме вручную.
17K
07 ноября 2006 года
_pasha
10 / / 26.10.2006
[QUOTE=aks]Насколько дродит?
-Храни копию изображения в виртуальном контексте, и рисуй только туда.
При обновление делай только копирование (BitBlt) уже в окно из той областии.[/QUOTE]

Спасибо за подсказку, но какого типа должен быть контекст источника при вызове BitBlt и как в этот контекст рисовать или хранить там изображение рабочей области?
240
07 ноября 2006 года
aks
2.5K / / 14.07.2006
Обычный виндовый HDC.
Если юзаешь какие то классовые библиотеки типа MFC, ATL там есть классовая оболочка над ним CDC.
Собсвенно расскажи, чем пользуешся и как рисуешь.
А так вот тебе примерчик на голом API который в случае чего легко переделать с поддержкой какой либо библиотеки или вобще не переделывать )
 
Код:
//Создаешь виртуальный контекст сначала:
HBITMAP   vBmp;
HDC vDC;
vDC = CreateCompatibleDC(GetDC(hWnd)); //hWnd - хендл твоего окна
vBmp = CreateCompatibleBitmap(vDC, width, height); //width, height - нужные размеры (максимум для окна)
// когда надо что то нарисовать рисуешь прям в vDC, а не в сам графический контекст окна.

//При обновлении делаешь например так:
BitBlt(dc, 0, 0, width, height, vDC, 0, 0, SRCCOPY);
//dc - контекст окна в который рисуешь
17K
07 ноября 2006 года
_pasha
10 / / 26.10.2006
"Голый" API вполне подойдет - на нем и рисую. Изображение выводится на проектор, поэтому нужно обеспечить качество.
Спасибо! Должен сказать, что мне немного стыдно - мог бы и сам догадатся. Время сэкономил :) - но мозги жиром заплывают :(
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог