我想将一幅bmp图像显示在picture控件上,显示结果不正确,实在没检查出来错误;
我将图像单独保存确实正确的!!!!
程序如下:
位图信息头:
//采用的相机为300万;
m_iWidth = 2048;
m_iHeight = 1536;
m_nBmpInfo.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
m_nBmpInfo.bmiHeader.biWidth = m_iWidth;
m_nBmpInfo.bmiHeader.biHeight = m_iHeight;
m_nBmpInfo.bmiHeader.biCompression = BI_RGB;
m_nBmpInfo.bmiHeader.biBitCount = 24;
m_nBmpInfo.bmiHeader.biClrUsed = 0;
m_nBmpInfo.bmiHeader.biClrImportant = 0;
m_nBmpInfo.bmiHeader.biSizeImage = m_iWidth*m_iHeight*3;
m_nBmpInfo.bmiHeader.biPlanes = 1;
显示图像:
//先绘制初始采集的图像;
CDC *pDC = m_pResultVideoWnd->GetDC();
CDC MemDC;
MemDC.CreateCompatibleDC(pDC);
CBitmap bmp;
bmp.CreateCompatibleBitmap(pDC, m_ResultVideoRect.Width(), m_ResultVideoRect.Height());
CBitmap *pOldBmp = MemDC.SelectObject(&bmp);
StretchDIBits(MemDC.GetSafeHdc(),0, 0, m_ResultVideoRect.Width(), m_ResultVideoRect.Height(), 0, 0, bmpInfo.bmiHeader.biWidth,
bmpInfo.bmiHeader.biHeight, VideoData, &bmpInfo, DIB_RGB_COLORS,SRCCOPY);
pDC->BitBlt(0, 0, m_ResultVideoRect.Width(), m_ResultVideoRect.Height(), &MemDC, 0, 0, SRCCOPY);
源图像:
显示结果:
这是什么原因呢??谢谢大家??
以前我用一样的程序,显示是正确的啊!!!是不是图像太大,采样的原因呢???