失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > C语言用句柄显示bmp图片 VC编程之VC MFC界面上显示BMP图片

C语言用句柄显示bmp图片 VC编程之VC MFC界面上显示BMP图片

时间:2022-10-25 18:51:37

相关推荐

C语言用句柄显示bmp图片 VC编程之VC MFC界面上显示BMP图片

本文主要向大家介绍了VC编程之VC MFC界面上显示BMP图片,通过具体的内容向大家展示,希望对大家学习VC编程有所帮助。

1、通过点击界面浏览按钮选择BMP图像文件。

点击浏览按钮打开文件对话框选择BMP图像文件,得到文件所在的路径目录。关键代码如下:

voidShowBMPDlg::OnButtonSelectiamge(){charszFilter[]="BMPFiles(*.bmp)|*.bmp|AllFiles(*.*)|*.*||";CFileDialogdlg(TRUE,"BMP",NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,szFilter);if(dlg.DoModal()==IDOK){strPathName=dlg.GetPathName();LoadShowBMPFile(strPathName);m_hBitmap=BufferToHBITMAP();Invalidate();}}

2、加载BMP文件到内存通过得到的BMP图像文件路径目录,加载BMP图像文件到内存中。关键代码如下:

BOOLShowBMPDlg::LoadShowBMPFile(constchar*pPathname){CFilefile;if(!file.Open(pPathname,CFile::modeRead))returnFALSE;DWORDm_nFileLen;m_nFileLen=file.GetLength();m_pBMPBuffer=newchar[m_nFileLen+1];if(!m_pBMPBuffer)returnFALSE;if(file.Read(m_pBMPBuffer,m_nFileLen)!=m_nFileLen)returnFALSE;returnTRUE;}

3、将内存中的BMP文件内容转换到HBITMAP将内存中的BMP文件内容转换成位图句柄。关键代码如下:

HBITMAPShowBMPDlg::BufferToHBITMAP(){HBITMAPhShowBMP;LPSTRhDIB,lpBuffer=m_pBMPBuffer;LPVOIDlpDIBBits;BITMAPFILEHEADERbmfHeader;DWORDbmfHeaderLen;bmfHeaderLen=sizeof(bmfHeader);strncpy((LPSTR)&bmfHeader,(LPSTR)lpBuffer,bmfHeaderLen);if(bmfHeader.bfType!=(*(WORD*)"BM"))returnNULL;hDIB=lpBuffer+bmfHeaderLen;BITMAPINFOHEADER&bmiHeader=*(LPBITMAPINFOHEADER)hDIB;BITMAPINFO&bmInfo=*(LPBITMAPINFO)hDIB;m_bmW=bmiHeader.biWidth;m_bmH=bmiHeader.biHeight;lpDIBBits=(lpBuffer)+((BITMAPFILEHEADER*)lpBuffer)->bfOffBits;CClientDCdc(this);hShowBMP=CreateDIBitmap(dc.m_hDC,&bmiHeader,CBM_INIT,lpDIBBits,&bmInfo,DIB_RGB_COLORS);returnhShowBMP;}

4、在屏幕上显示BMP图像双缓冲实现BMP位图显示在屏幕上。关键代码如下:

voidShowBMPDlg::DrawImage(intx,inty,CDC*pDC){HBITMAPOldBitmap;CDCMemDC;MemDC.CreateCompatibleDC(pDC);OldBitmap=(HBITMAP)MemDC.SelectObject(m_hBitmap);CBitmap*pBitmap=CBitmap::FromHandle(m_hBitmap);if(m_bmW==0||m_bmH==0)return;CRectrect;GetClientRect(&rect);pDC->BitBlt(x,y,rect.Width(),rect.Height(),&MemDC,0,0,SRCCOPY);MemDC.SelectObject(OldBitmap);}

这个方法是我们经常用的用来在界面上画图的一种方法。

以上就介绍了VC/MFC的学习,希望对VC/MFC有兴趣的朋友有所帮助。了解更多内容,请关注职坐标编程语言VC/MFC频道!

如果觉得《C语言用句柄显示bmp图片 VC编程之VC MFC界面上显示BMP图片》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。