[SDK]创建DC,保存DC为BMP文件
2015-04-07 13:18
169 查看
HDC CreateBitmapDC(LONG Width, LONG Height) { HDC hDC, hMemDC; BITMAPINFO bi; HBITMAP hBitmap; PVOID Bits; hDC = NULL; hMemDC = CreateCompatibleDC(NULL); memset(&bi, 0, sizeof(bi)); bi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER); bi.bmiHeader.biWidth = Width; bi.bmiHeader.biHeight = Height; bi.bmiHeader.biPlanes = 1; bi.bmiHeader.biBitCount = 24; if (hBitmap = CreateDIBSection(hMemDC, &bi, DIB_RGB_COLORS, &Bits, NULL, 0)) { DeleteObject(SelectObject(hMemDC, hBitmap)); hDC = hMemDC; } else { DeleteDC(hMemDC); } return hDC;// use DeleteDC to free handle } BOOL SaveDCToFile(HDC hDc, TCHAR *lpFile) { BOOL bRet; bRet = FALSE; if (HBITMAP hBitmap = (HBITMAP)GetCurrentObject(hDc, OBJ_BITMAP)) { BITMAP bm; if (GetObject(hBitmap, sizeof(bm), &bm) != 0) { BITMAPFILEHEADER bfh; BITMAPINFOHEADER bih; HANDLE hFile; memset(&bfh, 0, sizeof(bfh)); memset(&bih, 0, sizeof(bih)); bfh.bfType = 0x4D42; // "BM" bfh.bfSize = 0; bfh.bfOffBits = sizeof(bfh) + sizeof(bih); bih.biSize = sizeof(bih); bih.biWidth = bm.bmWidth; bih.biHeight = bm.bmHeight; bih.biPlanes = bm.bmPlanes; bih.biBitCount = bm.bmBitsPixel; bih.biCompression = BI_RGB; hFile = CreateFile(lpFile, GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, 0, NULL); if (hFile != INVALID_HANDLE_VALUE) { DWORD dwOpt; if (WriteFile(hFile, &bfh, sizeof(bfh), &dwOpt, NULL) && WriteFile(hFile, &bih, sizeof(bih), &dwOpt, NULL) && WriteFile(hFile, bm.bmBits, bm.bmWidthBytes * bm.bmHeight, &dwOpt, NULL)) { bRet = TRUE; } CloseHandle(hFile); } } } return bRet; }
相关文章推荐
- txt不保存为图片的原因,是创建dc时宽度值为负值,dc建立失败
- SDK:用CreateWindowEx创建模态对话框
- 用ASP.NET创建和保存图片到数据库
- java中利用dom4j对XML文档的创建、解析、查找、修改、保存等操作。
- 在C#中使用.NET SDK创建控制
- 动态创建控件支持事件响应并可保存与读取
- 保存远程图片到本地 同时取得第一张图片并创建缩略图
- 纯 C++ 代码创建并保存 EXCEL 文件
- MFC中的图象保存--关于兼容DC和CMetaFileDc的用法
- vb.net创建一个word文档并保存
- ATL COM组件,将指定DC句柄保存为BMP
- 用SDK创建一个简单的窗口
- 用SDK创建一个简单带滚动条的窗口
- 由数组数据创建一个灰度位图并保存
- 用SDK创建一个简单的窗口
- 将位图句柄保存为BMP文件
- 保存dc内容为bmp文件 ,屏幕截图也可以(zt)
- SRTUTS + ITEXT 创建日志数据的保存下载
- 在sdk下创建windows窗口
- 动态创建控件保存与读取(VC++6.0)