Автор
|
Тема: Bitmaps
|
MrSergei |
опубликован 07-02-2002 04:41 MSK
Известено: BITMAPINFO и весь массив пикселей, т.е. есть полноценный битмап, как его сохранить в битмап-файл, который, к примеру, будет состоять из верхней половины битмапа? Т.е. зная битмап, как сохранить в битмап-файл любую его часть по выбору?
|
x
|
опубликован 07-02-2002 05:51 MSK
typedef struct tagBITMAPFILEHEADER { WORD bfType; //тип файла (для битового образа - BM) DWORD bfSize; //размер файла в DWORD WORD bfReserved1; //не используется WORD bfReserved2; //не используется DWORD bfOffBits; //смещение данных битового образа от заголовка в байтах }BITMAPFILEHEADER;typedef struct tagBITMAPINFOHEADER { DWORD biSize; //число байт, занимаемых структурой BITMAPINFOHEADER DWORD biWidth; //ширина битового образа в пикселах DWORD biHeight; //высота битового образа в пикселах WORD biPlanes; //число битовых плоскостей устройства WORD biBitCount; //число битов на пиксель DWORD biCompression; //тип сжатия DWORD biSizeImage; //размер картинки в байтах DWORD biXPelsPerMeter;//горизонтальное разрешение устройства,пиксел/м DWORD biYPelPerMeter; //вертикальное разрешение устройства,пиксел/м DWORD biClrUsed; //число используемых цветов DWORD biClrImportant; //число "важных" цветов }BITMAPINFOHEADER; ВОТ тебе заголовок BMP=сохраняй |
DimaK
|
опубликован 07-02-2002 10:07 MSK
два контекста памяти и копируй куски какие хочешь да еще роп операции доступны BitBlt The BitBlt function performs a bit-block transfer of the color data corresponding to a rectangle of pixels from the specified source device context into a destination device context. BOOL BitBlt( HDC hdcDest, // handle to destination device context int nXDest, // x-coordinate of destination rectangle's upper-left // corner int nYDest, // y-coordinate of destination rectangle's upper-left // corner int nWidth, // width of destination rectangle int nHeight, // height of destination rectangle HDC hdcSrc, // handle to source device context int nXSrc, // x-coordinate of source rectangle's upper-left // corner int nYSrc, // y-coordinate of source rectangle's upper-left // corner DWORD dwRop // raster operation code ); HANDLE LoadImage( HINSTANCE hinst, // handle of the instance containing the image LPCTSTR lpszName, // name or identifier of image UINT uType, // type of image =IMAGE_BITMAP int cxDesired, // desired width= NULL int cyDesired, // desired height= NULL UINT fuLoad // load flags =LR_LOADFROMFILE ); ну и смотри сопутствующте функции там все просто |
Stiff
|
опубликован 07-02-2002 11:18 MSK
2DimaK Странно когда я поледний раз смотрел LoadImage. LR_LOADFROMFILE реализвано не было наверно я не там смотрел ...
|
DimaK
|
опубликован 07-02-2002 14:52 MSK
2Stiff вродебы и небыло:) когда я програмил в какойто доке нашел что так можно но только под nt проверил под виндами тоже работает :) а это с мсдн скопировал |