BMP显示
来源:互联网 发布:扫描ip地址软件 编辑:程序博客网 时间:2024/06/01 10:34
if(!file.Open(strFileName, CFile::modeRead))return;BITMAPFILEHEADER bmfHeader;nFileLen = file.GetLength();dwDibSize = nFileLen - sizeof(BITMAPFILEHEADER); //dwDibSize为BMP总大小减去BMP文件头的长度if (m_pDib != NULL) {delete[] m_pDib;m_pDib = NULL;}m_pDib = new unsigned char[dwDibSize]; // 为DIB位图分配内存if (file.Read((LPSTR)&bmfHeader, sizeof(bmfHeader)) != sizeof(bmfHeader)) //读文件头return;if (bmfHeader.bfType != ((WORD)('M' <<8) | 'B')) //判断是否是BMP位图return ;if (file.Read(m_pDib, dwDibSize) != dwDibSize) //读文件头以后的数据return ;m_bmpInfoHeader = (BITMAPINFOHEADER*)m_pDib;lHeight = m_bmpInfoHeader->biHeight; //图像长lWidth = m_bmpInfoHeader->biWidth; //图像宽 lBitCount = m_bmpInfoHeader->biBitCount; //图像位数switch(lBitCount) {case 1:NumColor = 2;break;case 4:NumColor = 16;break;case 8:NumColor = 256;break;case 24:NumColor = 0;break;default:NumColor = 0;break;return;}m_pDibBits = m_pDib + sizeof(BITMAPINFOHEADER) + NumColor * sizeof (RGBQUAD);
m_pDib和m_pDibBits都是BYTE数组指针
然后
CDC *pDC;CRect rect;CWnd *pWnd = GetDlgItem(IDC_STATIC_SHOW);pWnd->GetClientRect(&rect);pDC = pWnd->GetDC();SetStretchBltMode(pDC->m_hDC,HALFTONE);//防止自适应窗口图像显示失真StretchDIBits(pDC->m_hDC,rect.left, rect.top, rect.right, rect.bottom, 0, 0, lWidth, lHeight, m_pDibBits, (BITMAPINFO*)m_bmpInfoHeader, BI_RGB, SRCCOPY);
在OnPaint里面重载这段代码就行了
- BMP显示
- BMP图片显示程序
- vc 界面显示bmp
- Symbian:显示bmp图片
- 显示BMP文件
- OpenGL BMP文件显示
- mfc动态显示bmp
- 动态显示BMP位图
- CStatic显示bmp文件
- bmp在对话框显示
- BMP显示和保存
- framebuffer显示bmp格式文件
- framebuffer显示bmp格式文件
- emWin - BMP图片显示
- sdl2显示bmp图片
- BMP 打开 显示 保存
- MFC 显示bmp图片
- 对话框中显示bmp
- zoj3591 Nim-----位运算 博弈
- lcd驱动的fb_read函数分析
- struts2--表单校验
- 基站定位程序
- [教程]HTC G13 S-ON解锁至S-OFF简易方法
- BMP显示
- struts2标签比较时间大小
- MOSS2007安装心得
- 面试题
- 如何提高网络应用程序的性能
- J2EE 用监听器实现同一用户只能有一个在线
- 一个窗体调另一个窗体控件
- 广搜2 食物链
- CSDN创业俱乐部项目秀,9月15日