![]() |
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]() ![]() ![]() |
|
Tony |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1159 Регистрация: 3.3.2006 Где: Riga Репутация: нет Всего: 12 |
Првиет. Рисую на форме с помощю мыши. Если я свора4иваю окно или ресайз, автомтически вызывается WM_PAINT у формы. Понятно форма перерисовывается. Вопрос в том как сохранить нарисованное? Загоняьт в лист или массив а потом в паинт выводить 4то было раньше нарисовано? Как правелно сделать ?
![]() |
|||
|
||||
J0ker |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: -1 Всего: 14 |
рисовать на совместимом memory DC, а потом копировать через BitBlt когда нужно перерисовать
подсказка чтоб не мучался - неочевидно из документации - совместимый DC надо создавать не к окну, а к экрану - с параметром NULL - CreateCompatibleDC(NULL) и не забудь создать битмап и выбрать его в DC |
|||
|
||||
Tony |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1159 Регистрация: 3.3.2006 Где: Riga Репутация: нет Всего: 12 |
Пока мало 4то понял, хотябы знаю куда теперь копать. Спасибо за ответ .
![]() |
|||
|
||||
MenSem |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 10.7.2008 Репутация: нет Всего: нет |
Tony, пример проги:
--------------------
|
|||
|
||||
MenSem |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 10.7.2008 Репутация: нет Всего: нет |
J0ker, интересно. Пробовал - не получилось.
--------------------
|
|||
|
||||
J0ker |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: -1 Всего: 14 |
немного ошибся выше
CreateCompatibleDC(GetDC(NULL));
Это сообщение отредактировал(а) J0ker - 7.12.2008, 00:03 |
|||
|
||||
MenSem |
|
||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 10.7.2008 Репутация: нет Всего: нет |
Это в WM_CREATE ? Переменные static?
Здесь WndDC = BeginPaint(hWnd, &ps) ? Это сообщение отредактировал(а) MenSem - 7.12.2008, 18:22 --------------------
|
||||
|
|||||
J0ker |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: -1 Всего: 14 |
где угодно и как угодно memDC - объект существующий на протяжении всей жизни окна ессесна там нужны размеры битмапа - это можно делать по разному - можно сразу создать максимальный битмап, а можно пересоздавать битмап на WM_SIZE, перевыбирать его и перерисовавать на memDC содержимое
|
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 2 Всего: 110 |
судя по документации, надо бы запомнить результат GetDC(NULL) и вызвать для него ReleaseDC -------------------- qqq |
|||
|
||||
MenSem |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 10.7.2008 Репутация: нет Всего: нет |
maxim1000, без учета этого - появляется черный квадрат и рисование мышью не работает, с учетом - квадрата нет, но рисование не работает.
--------------------
|
|||
|
||||
J0ker |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: -1 Всего: 14 |
да, совершенно правильно сорри забыл |
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 2 Всего: 110 |
тут лучше бы привести код, а то вслепую сложно получается... -------------------- qqq |
|||
|
||||
J0ker |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: -1 Всего: 14 |
это не черный квадрат - битмап заполнен нулями - черный цвет
перед рисованием нарисуй белый квадрат на весь размер |
|||
|
||||
MenSem |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 10.7.2008 Репутация: нет Всего: нет |
В первом варианте работает Это сообщение отредактировал(а) MenSem - 16.12.2008, 19:55 --------------------
|
|||
|
||||
J0ker |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: -1 Всего: 14 |
остальное не смотрел |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Системное программирование и WinAPI" | |
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |