pThis->m_pBmpinfo = new BITMAPINFO;//m_pBmpinfo类型为BITMAPINFO
memset(pThis->m_pBmpinfo , 0 , sizeof(BITMAPINFO));
BITMAPINFOHEADER *bmpinfoheader = &(pThis->m_pBmpinfo->bmiHeader);
bmpinfoheader->biSize = sizeof(BITMAPINFOHEADER);
bmpinfoheader->biWidth = pFrameHead->iWidth;//图象宽度
bmpinfoheader->biHeight = pFrameHead->iHeight;//图象高度
bmpinfoheader->biBitCount = 24;//RGB使用3个字节
bmpinfoheader->biCompression = BI_RGB;
bmpinfoheader->biSizeImage = pFrameHead->iHeight*pFrameHead->iWidth*3;//RGB每个颜色占一个字节所以乘以3
bmpinfoheader->biClrImportant = 0;//填0即可
bmpinfoheader->biClrUsed = 0;//填0即可
bmpinfoheader->biXPelsPerMeter = 0;//填0即可
bmpinfoheader->biYPelsPerMeter = 0;//填0即可
bmpinfoheader->biPlanes = 1;//填1即可
CRect rect;
pThis->m_pDc = pThis->GetDlgItem(IDC_STATIC_VIEW)->GetDC();//得到对话框中picture空间的DC句柄,IDC_STATIC_VIEW为picture控件的资源ID
pThis->GetDlgItem(IDC_STATIC_VIEW)->GetClientRect(&rect);
SetStretchBltMode(pThis->m_pDc->GetSafeHdc(),COLORONCOLOR);//调整一下显示模式:DC句柄,彩色模式
//将图片缩放到画布大小进行显示
StretchDIBits(
pThis->m_pDc->GetSafeHdc(),//DC控件picture的窗口句柄
rect.left , //picture控件的左上角横坐标
rect.top , //picture控件的左上角横坐标
rect.Width() , //picture控件宽度
rect.Height() , //picture控件高度
0 , //在picture控件中,从图片的(0,0)的位置开始显示
0 ,
pFrameHead->iWidth ,//显示的图片宽度
pFrameHead->iHeight , //显示图片的高度
pThis->m_pFrameBuffer , //图片数据空间
pThis->m_pBmpinfo , //图片数据头
DIB_RGB_COLORS , //颜色空间
SRCCOPY);
MFC中picture显示bmp图片方法
最新推荐文章于 2023-09-08 16:45:34 发布