![]() |
|
|
![]()
|
|
| Alexsar |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 96 Регистрация: 6.5.2005 Репутация: нет Всего: 1 |
Как создать dib-картинку(класса CDib) того, что отрисовывает OnDraw?
|
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Что такое CDib?
Если обертка вокруг DIBSECTION (или может быть построен из нее) , тогда так: DIBSection нужного размера должен быть в наличии, перегружаешь OnPaint, где создаешь compatible DC, выбираешь туда HBITMAP, полученный при создании DIB и подсовываешь контекст в OnDraw, вместо того, который пришел в OnPaint, потом еще надо скопировать из compatible DC в первоначальный. -------------------- ... |
|||
|
||||
| Alexsar |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 96 Регистрация: 6.5.2005 Репутация: нет Всего: 1 |
Нет, в смысле в OnDraw есть такой код
и прочее как создать картинку того, что я вижу на экране, чтоб затем её сохранить? |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
И я тебе именно об этом говорю.
Чтобы получить в виде растра то, что ты рисуешь в контексте, нужно подменить контекст. Ну можешь еще кнопку Print Screen нажать. -------------------- ... |
|||
|
||||
| Alexsar |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 96 Регистрация: 6.5.2005 Репутация: нет Всего: 1 |
TO Earnest
Если можно код, а то я что -то запутался совсем и ещё как из этого всего создать и сохранить картинку на жёстком диске, ну например формата *.bmp? |
|||
|
||||
| Earnest |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Вот пример простого класса, оборачивающего создание контекста в памяти.
Принцип простой: когда нужно рисовать, создаем контекст в памяти и подсовываем его вместо исходного всем функциям рисования. Потом шлепаем на экран. В данном примере это делается во избежание мигания при объемных перерисовках. Но тебе тоже сгодится, с некоторыми изменениями.
Вот пример использования:
В данной реализации прорисовка в исходный контекст (экранный) происходит при разрушении MemDC, полученный битмап никак больше не используется. Однако он есть (CMemDC::m_Bitmap), и пока MemDC не разрушен, можно получить доступ к его содержимому. В твоем случае, вместо Bitmap лучше использовать DibSection (см функцию CreateDIBSection)- это практически готовый bmp, с тем же выравниванием строк. Кроме того, ты сам создаешь буфер для изображения и поэтому имеешь к нему полный доступ. Сохранение bmp-файла - это другая тема, по-моему уже обсуждавшаяся на форуме. В MSDN можно посмотреть в разделе Platform SDK\Graphics & Multimedia\Windows GDI\Bitmaps\Using bitmaps. -------------------- ... |
||||
|
|||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |