刚开始用StretchDIBits函数,有些地方不明白,请高手指点
X1X2
X3X4我将512x512 的图像分为如上图所示四块。我固定屏幕显示位置仅在X1块,当我在内存中指定X1块的数据在屏幕X1中显示时,能够在正确位置显示,可是如果我指定内存中X4块的数据在屏幕X1显示时,却在X4块显示,这是怎么回事,我并没改动DC 的显示位置坐标,块大小一样,没有缩放。
X1X2
X3X4我将512x512 的图像分为如上图所示四块。我固定屏幕显示位置仅在X1块,当我在内存中指定X1块的数据在屏幕X1中显示时,能够在正确位置显示,可是如果我指定内存中X4块的数据在屏幕X1显示时,却在X4块显示,这是怎么回事,我并没改动DC 的显示位置坐标,块大小一样,没有缩放。
CMYDoc::OnReceive()
{
m_rectDC.left = 0;
m_rectDC.top = 0;
m_rectDC.right = 256;
m_rectDC.bottom = 256; m_rectDIB.left = 256;
m_rectDIB.top = 256;
m_rectDIB.right = 512;
m_rectDIB.bottom = 512;
pMYView->Invalidate(TRUE);
pMYView->UpdateWindow();
}CMYView::Ondraw(CDC* pDC)
{
CMYDoc *pDoc = GetDocument();
lpDCRect = pDoc->m_rectDC;
lpDIBRect = pDoc->m_rectDIB;
bSuccess = ::StretchDIBits(pDC->m_hDC, // hDC
lpDCRect>left, // DestX
lpDCRect>top, // DestY
RECTWIDTH(lpDCRect), // nDestWidth
RECTHEIGHT(lpDCRect), // nDestHeight lpDIBRect>left, // SrcX
lpDIBRect>top, // SrcY
RECTWIDTH(lpDIBRect), // wSrcWidth
RECTHEIGHT(lpDIBRect), // wSrcHeight
lpDIBBits, // lpBits
(LPBITMAPINFO)lpDIBHdr, // lpBitsInfo
DIB_RGB_COLORS, // wUsage
SRCCOPY); // dwROP