Поиск:

Ответ в темуСоздание новой темы Создание опроса
> GDI+ совместно с GDI и двойной буферизацией 
:(
    Опции темы
mazzym
Дата 13.10.2011, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Пишу графическое приложение, в котором много чего рисуется. Есть сторонний код, который хочу подключить к программе (рисует с помощью GDI). Мой рендер использует GDI+ и двойную буферизацию. Пытаюсь  получить CDC так
Код

Gdiplus::Graphics g(this->m_hWnd, true);
CDC dc = g.GetHDC();


для того, чтобы передавать dc методам стороннего класса. Но и тут мне нужна двойная буферизация, так как там реализована активная перерисовка и появляется эффект мерцания.
Можно ли это все подружить вместе?

Вот так выглядит код при использовании CDC
Код

CBitmap bitmap;
CDC sourceDC;
CPaintDC targetDC(this->m_hWnd);
sourceDC.CreateCompatibleDC(targetDC.m_hDC);
bitmap.CreateCompatibleBitmap(targetDC, rectClient.Width()+1000, rectClient.Height()+1000);    
sourceDC.SelectBitmap(bitmap.m_hBitmap);

Draw(sourceDC); // Тут рисуем

targetDC.BitBlt(rectClient.left,rectClient.top,rectClient.Width(),rectClient.Height(),sourceDC.m_hDC,0,0,SRCCOPY);


Вот так выглядит код при использовании Gdiplus::Graphics
Код

Gdiplus::Graphics g(this->m_hWnd, true);
Gdiplus::Bitmap backBuffer(rectClient.right, rectClient.bottom, &g);
Gdiplus::Graphics gtemp(&backBuffer);

Draw(gtemp); // Тут рисуем

g.DrawImage(&backBuffer, 0, 0, 0, 0, rectClient.right, rectClient.bottom, Gdiplus::UnitPixel);

PM MAIL   Вверх
Earnest
Дата 13.10.2011, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(mazzym @  13.10.2011,  16:35 Найти цитируемый пост)
Можно ли это все подружить вместе?

Непонятно, в чем проблема.
Передавай во все ф-и прорисовки контекст буфера, а не экрана.


--------------------
...
PM   Вверх
Dem_max
Дата 14.10.2011, 18:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1780
Регистрация: 12.4.2007

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



GDI+ не решает за тебя проблемы двойной буфферизации


--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




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


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

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