Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.217.182.45] |
|
Сообщ.
#1
,
|
|
|
Как сохранить BMP, созданую. как DIB.
|
Сообщ.
#2
,
|
|
|
Посмотри на codeproject.com, вроде видел... В какой-то книжке видел класс-обёртку API (не MFC), который это всё позволял.
|
Сообщ.
#3
,
|
|
|
Я посмотрел сылку ноничего не нашел,
Но вроде бы задачка то простая? |
Сообщ.
#4
,
|
|
|
http://download.microsoft.com/download/platformsdk/file90/3.1/W31/EN-US/WINCAP.EXE
правда, это старьё, но код погляди |
Сообщ.
#5
,
|
|
|
Там все до безобразия просто. Сохраняешь сначала заголовок, потом битовый массив. Примерный код из хелпа BC5.0 :
/* Create the .BMP file. */ hf = CreateFile(pszFile, GENERIC_READ | GENERIC_WRITE, (DWORD) 0, (LPSECURITY_ATTRIBUTES) NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, (HANDLE) NULL); if (hf == INVALID_HANDLE_VALUE) errhandler("CreateFile", hwnd); hdr.bfType = 0x4d42; /* 0x42 = "B" 0x4d = "M" */ /* Compute the size of the entire file. */ hdr.bfSize = (DWORD) (sizeof(BITMAPFILEHEADER) + pbih->biSize + pbih->biClrUsed * sizeof(RGBQUAD) + pbih->biSizeImage); hdr.bfReserved1 = 0; hdr.bfReserved2 = 0; /* Compute the offset to the array of color indices. */ hdr.bfOffBits = (DWORD) sizeof(BITMAPFILEHEADER) + pbih->biSize + pbih->biClrUsed * sizeof (RGBQUAD); /* Copy the BITMAPFILEHEADER into the .BMP file. */ if (!WriteFile(hf, (LPVOID) &hdr, sizeof(BITMAPFILEHEADER), (LPDWORD) &dwTmp, (LPOVERLAPPED) NULL)) errhandler("WriteFile", hwnd); /* Copy the BITMAPINFOHEADER and RGBQUAD array into the file. */ if (!WriteFile(hf, (LPVOID) pbih, sizeof(BITMAPINFOHEADER) + pbih->biClrUsed * sizeof (RGBQUAD), (LPDWORD) &dwTmp, (LPOVERLAPPED) NULL)) errhandler("WriteFile", hwnd); /* Copy the array of color indices into the .BMP file. */ dwTotal = cb = pbih->biSizeImage; hp = lpBits; while (cb > MAXWRITE) { if (!WriteFile(hf, (LPSTR) hp, (int) MAXWRITE, (LPDWORD) &dwTmp, (LPOVERLAPPED) NULL)) errhandler("WriteFile", hwnd); cb-= MAXWRITE; hp += MAXWRITE; } if (!WriteFile(hf, (LPSTR) hp, (int) cb, (LPDWORD) &dwTmp, (LPOVERLAPPED) NULL)) errhandler("WriteFile", hwnd); /* Close the .BMP file. */ |