对话框显示图像的简单方法
来源:互联网 发布:webuploader php后端 编辑:程序博客网 时间:2024/05/30 04:06
1、获取图像的内存数据
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);
- 对话框显示图像的简单方法
- Qt对话框显示opencv读取的图像
- openCV 对话框 显示图像
- OpenCV图像显示在VC对话框中的方法
- [转]OpenCV图像显示在VC对话框中的方法
- OpenCV图像显示在VC对话框中的方法
- OpenCV图像或视频显示在VC对话框中的方法
- vc显示jpg,gif图像简单方法
- vc显示jpg,gif图像简单方法
- vc显示jpg,gif图像简单方法
- vc显示jpg,gif图像简单方法
- 简单的图像加密方法
- MFC对话框应用程序显示图像
- VC++2008中基于对话框GDI+的图像显示
- VC++2008中基于对话框GDI+的图像显示
- MFC对话框的picture控件中显示IplImage*格式图像
- 在对话框上显示位图的方法
- 在对话框显示图片的多种方法
- 第三周项目2-建设“顺序表”算法库
- block_dump观察Linux IO写入的具体文件
- memcache CAS实现原子操作
- 15.Android 异步更新UI 技巧
- Singleton
- 对话框显示图像的简单方法
- xib自定义cell,代码修改cell里控件frame加载后不生效,下一次reloaddata改变?
- 第三周实践项目-顺序表的基本运算
- poj2385+动态规划有点还 不能完全理解
- javascript 方法 prototype属性
- android NotificationCompat.Builder 使用
- CentOS 6.5上使用gdb调试时出现Missing separate debuginfos, use: debuginfo-install glibc-2.12-1.132.el6.i686 .
- perl--匿名数据
- ios中,动态获取文件类型,方便自己上传到服务器上