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

Ваш аккаунт

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

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

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

Сохранение клиентской области приложения в BMP

470
22 марта 2003 года
MemWithoutName
16 / / 20.12.1999
У меня така байда: пишу графический редактор на чистом МФЦ. Загружаю БМП в клиентскую область и там рисую. Как сохранить нарисованное в БМП?
И еще один вопрос: как прилепить к загруженному БМП прокрутку?. Я пишу без концепции документ/вид
380
26 марта 2003 года
Arestov
285 / / 20.09.2000
Цитата:
Originally posted by MemWithoutName
У меня така байда: пишу графический редактор на чистом МФЦ.


гм... а как можно на "грязном" MFC? :)

Цитата:
Originally posted by MemWithoutName
Как сохранить нарисованное в БМП?


если я тебя правильно понял ты создаешь DIBSection который отображаешь в клиентской области, а также проводишь модификации в нём, посмотри структуру BITMAPFILEHEADER, это заголовок BMP, за ней идёт BITMAPINFO, заполнить поля этих структур труда не составит (bmiColors для True/HiColor не нужно), т.к. у тя есть DIB секция (если ты её не делал то можно получить инфу через GetObject). там есть одна тонкость: BMP записывается в файл вверх ногами, но и это легко решаемо.

Цитата:
Originally posted by MemWithoutName
Я пишу без концепции документ/вид


и очень зря!

470
27 марта 2003 года
MemWithoutName
16 / / 20.12.1999
Цитата:
Originally posted by Arestov

гм... а как можно на "грязном" MFC? :)


если я тебя правильно понял ты создаешь DIBSection который отображаешь в клиентской области, а также проводишь модификации в нём, посмотри структуру BITMAPFILEHEADER, это заголовок BMP, за ней идёт BITMAPINFO, заполнить поля этих структур труда не составит (bmiColors для True/HiColor не нужно), т.к. у тя есть DIB секция (если ты её не делал то можно получить инфу через GetObject). там есть одна тонкость: BMP записывается в файл вверх ногами, но и это легко решаемо.


и очень зря!



Чистый, т.е. без использования Визардов.
Вы правы,но я сохраняю экран в HMEATAFILE, а не в битмэпе.А как сохранить из HMEATAFILE в файл БМП?
И как добавить скроллинг, что ScrollDC&

380
27 марта 2003 года
Arestov
285 / / 20.09.2000
Цитата:
Originally posted by MemWithoutName


Чистый, т.е. без использования Визардов.
Вы правы,но я сохраняю экран в HMEATAFILE, а не в битмэпе.А как сохранить из HMEATAFILE в файл БМП?
И как добавить скроллинг, что ScrollDC&



гм. я не знаю правильного способа, т.к. никогда такой задачей не занимался, но думаю сделал бы так:
отрендерил метафайл в какой-нить контекст, ну а контекст уже так как писал выше :)

а скролл можно сделать руками обрабатывая WM_VSCROLL, WM_HSCROLL, и рисование.

8.2K
10 марта 2006 года
TheMaster
32 / / 23.12.2005
В смысле, я себе такую же задачу поставил. Написать прогу, которая будет:

а) загружать на экран графический файл (к примеру, bmp);

б) некоторым образом его преобразовывать;

в) сохранять результат работы на диск.

Вообще-то, такую весчь надо писать в виде плагина к PhotoShop'у, но с этим зверем на каком языке разговаривать, я вообще не знаю. Посему пишу отдельной программой. Решил на VC++ 6.0, шоб, значицца, попробовать, как это. Ну, в общем, кто сможет помочь с исходником - буду весьма благодарен.

И, значицца, какая проблема возникла: юзаю пример с сайта firststeps.ru, где про Visual C++ пишут, конкретно - про MFC. Шаг, значит, 143, используют там функцию StretchDIBits, чтобы перегнать битовый массив куда надо. И возвертать она должна число перегнанных строчек. Я чего-то не то, наверное, сделал, и она возвертает мне стабильно - 0. Вызываю GetLastError - она возвращает 0. Почему - непонятно. Наверное, понятней будет, когда примерчик посмотрю.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог