这个问题困扰了我很久很久了,终于发现问题所在,原来lpSrcStartBits设置有问题,只要用
lpSrcStartBits = lpDib + lpbmi->bmiHeader.biSize;。就可解决
HGLOBAL hDIB = pDoc->GetHObject();
if(pDoc->m_hDIB != NULL)
{
LPSTR lpDib = (LPSTR)::GlobalLock(hDIB);
LPBITMAPINFO lpbmi = (LPBITMAPINFO)lpDib; // 获取指针
LPSTR lpSrcStartBits=lpDib + lpbmi->bmiHeader.biSize;
/*int i = lpbmi->bmiHeader.biBitCount;
int i = lpbmi->bmiHeader.biSize;
CString str;
str.Format(_T("%d"),i);
AfxMessageBox(_T(str));*/
SrcRect.right = pDoc->m_dib.GetWidth(lpDib);
SrcRect.bottom = pDoc->m_dib.GetHeight(lpDib);
SetStretchBltMode(pDC->m_hDC,COLORONCOLOR);
::StretchDIBits(pDC->GetSafeHdc() , 0 , 0 ,SrcRect.right ,SrcRect.bottom ,0 ,0 ,pDoc->m_dib.GetWidth(lpDib),
pDoc->m_dib.GetHeight(lpDib), lpSrcStartBits, lpbmi,DIB_RGB_COLORS, SRCCOPY);
}
没有评论:
发表评论