按照位图的格式,写到文件就可以了。
MSDN中的DIBLOOK例子,从BMP的打开到保存都有,可以自己看看。
在这里可能会得到一些零散的回答,即使这个问题解决了,可能还会有其它的问题。
MSDN中的DIBLOOK例子,从BMP的打开到保存都有,可以自己看看。
在这里可能会得到一些零散的回答,即使这个问题解决了,可能还会有其它的问题。
解决方案 »
- Microsoft DirectX SDK (June 2010),结果例子无法编译
- win32的控制台程序 的 ShowWindow(hWnd,ID)
- 很老套的问题,如何学习VC
- 这个思路对不对
- 关于VC2003加载宏的问题, 急~~在线等~~~
- 我用这种方法读一个.c文件到CEdit里,不知道为什么,最后文件末尾会总会多一些其他字符。
- 基础好的兄弟进来,得花点时间,一外企上机题目
- 写了个dll,用asp调用,错误如下.
- 我想在windows2000下不能格式化我的移动磁盘并给我提示,而在windows98下要调动我的格式化程序,我该怎么做?急....,
- 怎样截获IP包???
- 如何让窗口在最上方显示
- 构造CBitmap
// open file
HANDLE hSnapshotFile = CreateFile(szFilename, GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if ( NULL == hSnapshotFile )
{
delete []pBuf;
return HRESULT_FROM_WIN32(GetLastError());
} // write BMP file header
DWORD nWritten = 0;
UINT32 nImageSize = nWidth * nHeight * 3;
BITMAPFILEHEADER bmpHeader;
BITMAPINFOHEADER bmiHeader;
bmpHeader.bfType = 'MB';
bmpHeader.bfSize = nImageSize + sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);;
bmpHeader.bfReserved1 = 0;
bmpHeader.bfReserved2 = 0;
bmpHeader.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);
bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
bmiHeader.biWidth = nWidth;
bmiHeader.biHeight = nHeight;
bmiHeader.biPlanes = 1;
bmiHeader.biBitCount = 24;
bmiHeader.biCompression = BI_RGB;
bmiHeader.biSizeImage = nImageSize;
bmiHeader.biXPelsPerMeter = 0;
bmiHeader.biYPelsPerMeter = 0;
bmiHeader.biClrUsed = 0;
bmiHeader.biClrImportant = 0;
if ( !WriteFile(hSnapshotFile, &bmpHeader, sizeof(bmpHeader), &nWritten, NULL) )
{
delete []pBuf;
CloseHandle(hSnapshotFile);
return HRESULT_FROM_WIN32(GetLastError());
}
if ( !WriteFile(hSnapshotFile, &bmiHeader, sizeof(bmiHeader), &nWritten, NULL) )
{
delete []pBuf;
CloseHandle(hSnapshotFile);
return HRESULT_FROM_WIN32(GetLastError());
} // BMP file data
for ( INT32 y = nHeight - 1; y >= 0; y-- )
{
if ( !WriteFile(hSnapshotFile, pBuf + y * nWidth * 3, nWidth * 3, &nWritten, NULL) )
{
delete []pBuf;
CloseHandle(hSnapshotFile);
return HRESULT_FROM_WIN32(GetLastError());
}
} // free memory
delete []pBuf; // close file
CloseHandle(hSnapshotFile);
如果你有VC基础,一个星期绝对可以搞定。