С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
direct
0 / 0 / 0
Регистрация: 06.07.2010
Сообщений: 21
#1

HBITMAP, CImage, BITMAP, CBitmap. Заблудился в трех березах. Где же выход? - C++

06.04.2012, 15:12. Просмотров 1201. Ответов 0
Метки нет (Все метки)

имеется: дискриптор картинки с диска, структура BITMAP заполненная в соответствии с этой картинкой, объект CBitmap с "прикрепленным" дискриптором, все это очень замечательно выводится на экран.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/*CString name;
    CRect rc;   
    HANDLE hBmp;
    BITMAP bm;
    HBITMAP   hbmpOld, hToSave;   - объявлены и опредлены в другом месте*/
 
           CClientDC dc(this);  
    CDC       dcMem;
    CBitmap   m_bmpBack;
 
    GetClientRect(&rc);  
    hBmp = LoadImage(NULL,name,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);   
    GetObject ( hBmp, sizeof(bm), &bm );    
    m_bmpBack.Attach(hBmp); 
 
           dcMem.CreateCompatibleDC(&dc);
           hbmpOld = (HBITMAP)dcMem.SelectObject(m_bmpBack);    
 
    dc.StretchBlt(rc.left, rc.top, rc.right, rc.bottom,&dcMem, 0, 0, (int)bm.bmWidth, (int)bm.bmHeight, SRCCOPY);   
    dcMem.SelectObject(hbmpOld);
Хочу:
С помощью класса СImage сохранить из какого-либо из указаных объектов новый файл на диск, делаю в соответствии со всякой справочной литературой так:

C++
1
2
3
4
HBITMAP hToSave = (HBITMAP)m_bmpBack.GetSafeHandle();
CImage myImage; 
myImage.Attach(hToSave);
myImage.Save(L"d:/image3.jpg");
файл создается но в нем чернота, а должен быть андреевский флаг. Хотя при таком варианте (то есть без рисования и загрузки через дискрипторы):

C++
1
2
3
CImage myImage; 
myImage.Load(L"d:/bmp.bmp");    
myImage.Save(L"d:/image3.jpg");
все работает прекрасно. Похоже потери какие-то происходят при формировании HBITMAPа... Какие??? Кто чем можите поможите) Как запихнуть в CImage картинку нарисованную в контексте устройства?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.04.2012, 15:12
Здравствуйте! Я подобрал для вас темы с ответами на вопрос HBITMAP, CImage, BITMAP, CBitmap. Заблудился в трех березах. Где же выход? (C++):

Bitmap cImage = LoadBitmap(GetModuleHandle(0), MAKEINTRESOURCE(IDB_BITMAP1) error - C++ WinAPI
переменная cImage имеет тип Bitmap, необходимо в нее загрузить изображение .bmp, функция LoadBitmap() возвращает HBITMAP, как избежать...

HBITMAP и bitmap - C++ Builder
У меня есть bitmap, как из него получить HBITMAP? HBITMAP hbm=bmp->Canvas->Handle;//Не работает Можно через одно место, но медленно(( ...

Как получить Bitmap из HBITMAP - C++/CLI
Вот такой код должен получать снимак экрана и выводить его в pictureBox HDC scrdc, memdc; HBITMAP membit; scrdc = GetDC(0); Height...

Рисование битмапов: (HBITMAP)SelectObject(hMemDC, hBitmap) выдаёт ошибку - C++ WinAPI
Использовал пример из книг Фроловых "Библиотека системного программиста" рисование битовых изображений в формате DDB. Загрузил битмап из...

Угадай, где выход! (Поиск листа бинарного дерева, содержащего выход из лабиринта) - Алгоритмы
Никогда раньше не решал задачи на деревья, но вот решил начать. Самая большая проблема в том, что я никак не могу понять примеры тестов...

Где хранить изображение BitMap - C++ Builder
Привет! Мне нужно запоминать изображение, или часть изображения Канвы. Я знаю, что есть метод Канвы CopyRect, но мне не нужно...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.04.2012, 15:12
Привет! Вот еще темы с ответами:

Заблудился в индексах - PHP
Код такой: $str = 'Я {самый|очень}, ну ужас как хороший {программист|programmer|юзер} и {программист|хорерограф}. Танцевал на сцене ...

Заблудился в инфоблоках - 1С Битрикс
Подскажите, в чем может быть дело: прикрутил инфоблок bitrix:news в правой колонке. Тырцаю на него, он открывается, но не в рабочей...

Заблудился в ссылках - C++
void fn(My_class& x) { } My_class y = My_class(); fn(y); Что получит функция fn? Копию объекта? Ссылку на объект? Если...

Где взять выход на сабвуфер с автомагнитолы? - Аудио, усилители звука
дорогие друзя. проблема такая: есть магнитола родная Форд и есть хотение подключить к ней саб через усилитель. но на магнитоле нет выходов...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.