Сохранение клиентской области приложения в BMP
И еще один вопрос: как прилепить к загруженному БМП прокрутку?. Я пишу без концепции документ/вид
У меня така байда: пишу графический редактор на чистом МФЦ.
гм... а как можно на "грязном" MFC? :)
Как сохранить нарисованное в БМП?
если я тебя правильно понял ты создаешь DIBSection который отображаешь в клиентской области, а также проводишь модификации в нём, посмотри структуру BITMAPFILEHEADER, это заголовок BMP, за ней идёт BITMAPINFO, заполнить поля этих структур труда не составит (bmiColors для True/HiColor не нужно), т.к. у тя есть DIB секция (если ты её не делал то можно получить инфу через GetObject). там есть одна тонкость: BMP записывается в файл вверх ногами, но и это легко решаемо.
Я пишу без концепции документ/вид
и очень зря!
гм... а как можно на "грязном" MFC? :)
если я тебя правильно понял ты создаешь DIBSection который отображаешь в клиентской области, а также проводишь модификации в нём, посмотри структуру BITMAPFILEHEADER, это заголовок BMP, за ней идёт BITMAPINFO, заполнить поля этих структур труда не составит (bmiColors для True/HiColor не нужно), т.к. у тя есть DIB секция (если ты её не делал то можно получить инфу через GetObject). там есть одна тонкость: BMP записывается в файл вверх ногами, но и это легко решаемо.
и очень зря!
Чистый, т.е. без использования Визардов.
Вы правы,но я сохраняю экран в HMEATAFILE, а не в битмэпе.А как сохранить из HMEATAFILE в файл БМП?
И как добавить скроллинг, что ScrollDC&
Чистый, т.е. без использования Визардов.
Вы правы,но я сохраняю экран в HMEATAFILE, а не в битмэпе.А как сохранить из HMEATAFILE в файл БМП?
И как добавить скроллинг, что ScrollDC&
гм. я не знаю правильного способа, т.к. никогда такой задачей не занимался, но думаю сделал бы так:
отрендерил метафайл в какой-нить контекст, ну а контекст уже так как писал выше :)
а скролл можно сделать руками обрабатывая WM_VSCROLL, WM_HSCROLL, и рисование.
а) загружать на экран графический файл (к примеру, bmp);
б) некоторым образом его преобразовывать;
в) сохранять результат работы на диск.
Вообще-то, такую весчь надо писать в виде плагина к PhotoShop'у, но с этим зверем на каком языке разговаривать, я вообще не знаю. Посему пишу отдельной программой. Решил на VC++ 6.0, шоб, значицца, попробовать, как это. Ну, в общем, кто сможет помочь с исходником - буду весьма благодарен.
И, значицца, какая проблема возникла: юзаю пример с сайта firststeps.ru, где про Visual C++ пишут, конкретно - про MFC. Шаг, значит, 143, используют там функцию StretchDIBits, чтобы перегнать битовый массив куда надо. И возвертать она должна число перегнанных строчек. Я чего-то не то, наверное, сделал, и она возвертает мне стабильно - 0. Вызываю GetLastError - она возвращает 0. Почему - непонятно. Наверное, понятней будет, когда примерчик посмотрю.