Re: Проблема с GetDIBits
От: Pavel Dvorkin Россия  
Дата: 10.12.04 05:51
Оценка:
Здравствуйте, nikitozz, Вы писали:

N>Друзья, у меня возникла проблема с использованием этой функции. Я очень

N>долго читал форум и все ветки по этой теме, но так и не смог решить
N>проблему.

N>Вот кусок кода:



N>[ccode]

N>BITMAP bmp;
N>BITMAPINFO bmpinf;
N>// hBitmap — HBITMAP растра

А ты уверен, что hBitmap — хэндл битовой карты DIB (т.е. создан с помощью CreateDIBitmap или CreateDIBSection ? А иначе ты пытаешься найти то, чего нет.



N>GetObject(hBitmap, sizeof(bmp), &bmp);


N>int height = bmp.bmHeight;

N>int width = bmp.bmWidth;
N>int bpp = bmp.bmBitsPixel; //Все эти переменные нормально заполняются
N>ZeroMemory(&bmpinf, sizeof(bmpinf));
N>bmpinf.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
N>bmpinf.bmiHeader.biCompression = BI_RGB;
N>bmpinf.bmiHeader.biBitCount = bpp;
N>bmpinf.bmiHeader.biPlanes = 1;
N>bmpinf.bmiHeader.biWidth = width;
N>bmpinf.bmiHeader.biHeight = -height;
N>bmpinf.bmiHeader.biSizeImage = width*height*bpp/8;

N>DWORD *buf;

N>buf = (DWORD*)new char[width*height*bpp/8];//буфер

N>HDC hdc = GetDC(NULL);


N>SelectObject (hdc, hBitmap);


Хм... Это что такое ? GetDC(NULL) возвращает контекст дисплея. А тебе нужен compatible DC (CreateCompatibleDC), если уж хочешь выбрать битовую карту .


With best regards
Pavel Dvorkin
With best regards
Pavel Dvorkin
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.