Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 31.01.2012
Сообщений: 5

Двойная буферизация!

15.02.2012, 23:38. Показов 2075. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пишу очень облегченное и просто подобие старого Пеинта, но столкнулся с одной проблемой рпи использовании двойной буферизации. Вот пример кода отрисовки:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
                        GetClientRect(hWnd,&rc);
            if (fl==true)
            {
                // Создаем off-screen DC для двойной буферизации
                hdcMem = CreateCompatibleDC(hdc);
                hbmMem = CreateCompatibleBitmap(hdc, rc.right,rc.bottom-100);
                hOld   = SelectObject(hdcMem, hbmMem);
                
                // Здесь рисуем в hdcMem
                
                W.PaintAll(hWnd,hdcMem);
                W.sGet(hWnd);
                W.sPaint(hdcMem);
 
                // Выводим построенное  изображение и памяти на экран
                BitBlt(hdc, 0, 0,  rc.right, rc.bottom-100, hdcMem, 0, 0, SRCCOPY);
 
                // Освобождаем память
                 SelectObject(hdcMem, hOld);
                 DeleteObject(hbmMem);
                 DeleteDC    (hdcMem);
            }
Я так понимаю, что вот в этой строчке
Code
1
hbmMem = CreateCompatibleBitmap(hdc, rc.right,rc.bottom-100);
я указываю область перерисовки, но мне нужно сделать ее не с точки (0,0), а с точки (100,0)... Как это можно сделать?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.02.2012, 23:38
Ответы с готовыми решениями:

Двойная буферизация, присутствует мерцание
Здравствуйте! Если форма на C++ (чистый WinAPI), на ней рисуется графика с помощью GDI+. Форма обновляется каждые 100мс., но вот беда...

Двойная буферизация под Win на VC++ (MFC)
Двойная буферизация под Win на VC++(MFC) - кто-нибудь знает - это вообще возможно?? Или по-другому: можно-ли создать в MFC SDI копию...

Двойная компиляция
Всем привет! При компиляции на VS2010 происходит двойной запуск программы. При использовании OpenGL в первый раз консоль перекрывает...

2
20 / 20 / 4
Регистрация: 23.10.2009
Сообщений: 139
16.02.2012, 09:50
Я так понимаю, что вот в этой строчке я указываю область перерисовки
Согласно МСДНу, в параметрах функции CreateCompatibleBitmap передаются размеры битмапа

мне нужно сделать ее не с точки (0,0), а с точки (100,0)
Я правильно понял, требуется вывести изображение из памяти в контекст hdc, в точку с координатой (100, 0)? Если так, то это делается правильным указанием параметров функции BitBlt (в твоем случае вторым параметром в BitBlt нужно передать значение 100)
0
290 / 193 / 23
Регистрация: 03.08.2011
Сообщений: 2,824
Записей в блоге: 12
17.02.2012, 18:30
а какой тип имеет W ???
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.02.2012, 18:30
Помогаю со студенческими работами здесь

Двойная буферизация
Добрый день! Имеется обычное оконное приложение Win32, необходимо реализовать при рисовании механизм двойной буферизации. Вот мой код, по...

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

Двойная буферизация
Всем привет! У меня есть маленькая программа которая выводит текст на панели задач, и этот текст постоянно изменяется в цикле. Принцип...

двойная буферизация
Здравствуйте. Ребят не сочтите за труд, помогите разобраться. Проблема собственно вот в чём: Пишу тетрис, в окошке находится стакан с...

Двойная буферизация
Написал тетрис (но только с палочками (друг попросил сделать =) )) Писал на чистом WinAPI, в WM_PAINT происходит сначала отрисовка...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru