对话框显示图像的简单方法
2015-09-21 17:02
423 查看
1、获取图像的内存数据
2、调用BufferToHBITMAP()函数,将图像数据转为HBITMAP
3、在OnDraw里面,利用双缓冲,贴图像数据
详细说明:
1、利用FILE来打开图像文件,利用下面函数获取文件大小。再用fread,将图像文件读取到内存中。
2、
3、OnDraw函数里面的实现:
2、调用BufferToHBITMAP()函数,将图像数据转为HBITMAP
3、在OnDraw里面,利用双缓冲,贴图像数据
详细说明:
1、利用FILE来打开图像文件,利用下面函数获取文件大小。再用fread,将图像文件读取到内存中。
long Getlength( FILE *fp ) { long cur_pos; long len; //取得当前文件流的读取位置 cur_pos = ftell( fp ); //将文件流的读取位置设为文件末尾 fseek( fp, 0, SEEK_END ); //获取文件末尾的读取位置,即文件大小 len = ftell( fp ); //将文件流的读取位置还原为原先的值 fseek( fp, cur_pos, SEEK_SET ); return len; }
2、
HBITMAP BufferToHBITMAP(char* pBMPBuffer,int& nbmW,int& nbmH,CWnd* pWnd) { HBITMAP hShowBMP; LPSTR hDIB,lpBuffer = pBMPBuffer; LPVOID lpDIBBits; BITMAPFILEHEADER bmfHeader; DWORD bmfHeaderLen; bmfHeaderLen = sizeof(bmfHeader); strncpy((LPSTR)&bmfHeader,(LPSTR)lpBuffer,bmfHeaderLen); if (bmfHeader.bfType != (*(WORD*)"BM")) return NULL; hDIB = lpBuffer + bmfHeaderLen; BITMAPINFOHEADER &bmiHeader = *(LPBITMAPINFOHEADER)hDIB ; BITMAPINFO &bmInfo = *(LPBITMAPINFO)hDIB ; nbmW = bmiHeader.biWidth; nbmH = bmiHeader.biHeight; lpDIBBits=(lpBuffer)+((BITMAPFILEHEADER *)lpBuffer)->bfOffBits; CClientDC dc(pWnd); hShowBMP = CreateDIBitmap(dc.m_hDC,&bmiHeader,CBM_INIT,lpDIBBits, &bmInfo,DIB_RGB_COLORS); return hShowBMP; }
3、OnDraw函数里面的实现:
if (NULL == m_pBMPBuffer) { return; } if (NULL == m_hBitmap) { m_hBitmap = BufferToHBITMAP(m_pBMPBuffer,m_nbmW,m_nbmH,this); } HBITMAP OldBitmap; CDC MemDC; MemDC.CreateCompatibleDC(pDC); OldBitmap=(HBITMAP)MemDC.SelectObject(m_hBitmap); CBitmap* pBitmap = CBitmap::FromHandle(m_hBitmap); if(m_nbmW == 0 || m_nbmH == 0) { return; } CRect rect; GetClientRect(&rect); ::SetStretchBltMode (pDC->m_hDC, HALFTONE); pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&MemDC,0,0,m_nbmW,m_nbmH,SRCCOPY); MemDC.SelectObject(OldBitmap);
相关文章推荐
- MooBox 基于Mootools的对话框插件
- C#实现在前端网页弹出警告对话框(alert)的方法
- Android开发必知 九种对话框的实现方法
- Android列表对话框用法实例分析
- C#使用Word中的内置对话框实例
- MFC对话框中添加状态栏的方法
- 用JavaScript实现对话框的教程
- Asp.net 弹出对话框基类(输出alet警告框)
- boxy基于jquery的弹出层对话框插件扩展应用 弹出层选择器
- 自制轻量级仿jQuery.boxy对话框插件代码
- 基于jQuery的弹出警告对话框美化插件(警告,确认和提示)
- JS 模态对话框和非模态对话框操作技巧汇总
- jquery ui对话框实例代码
- Android中自定义对话框(Dialog)的实例代码
- asp.net静态方法弹出对话框实现思路
- JavaScript 对话框和状态栏使用说明
- Jquery实现页面加载时弹出对话框代码
- js弹出模式对话框,并接收回传值的方法
- JS给超链接加确认对话框的方法
- Android之日期及时间选择对话框用法实例分析