как переконвертить Bitmap
От: Uras  
Дата: 07.04.05 13:24
Оценка:
есть DIbitmap одного формата (скажем, 24 битный)
хочется сделать bitmap другого формата, из которого можно было бы взять адрес data

я нашел два способа — оба не работают

исходная битмап лежит по адресу buffer_start, описание bi (типа BITMAPINFO)

через DDB

hbmp=CreateCompatibleBitmap(dc->m_hDC,nx,ny);
SetDIBits(NULL,hbmp,0,100,buffer_start,&bi,DIB_RGB_COLORS);

bmp=CBitmap::FromHandle(hbmp);
bmp->GetBitmap(&binfo);

после этого поле binfo.bmDits== 0x00000000

через DIB

bits = new char[nx*ny*4];

hbmp=CreateBitmap(fr->row_pixels,fr->row_count,1,24,bits);
SetDIBits(NULL,hbmp,0,100,buffer_start,&bi,DIB_RGB_COLORS);

— в этой версии не выполняется функция SetDIBits (и вроде не должна)

Как быть — очень хочется чтоб работало быстро и без лишних копирований битмапа
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.