图像显示出现问题?
打开一幅BMP位图后,在上面任意选取一矩形区域,想要把这一矩形区域再单独显示出来,我的想法是先将这一矩形区域送到剪贴板,然后再将剪贴板上的图像显示出来。现在的问题是显示后的图像下半部分是原先矩形区域内的上半部分图像,而上半部分图像不是原先矩形区域内的图像。请教高手?谢谢。看看下面这段代码哪里出问题了。
int nX, nY, nX2, nY2;
int nWidth, nHeight;
nX=LPRECT(m_rectTracker.m_rect)->left;//m_rectTracker为矩形区域
nY=LPRECT(m_rectTracker.m_rect)->top;
nX2=LPRECT(m_rectTracker.m_rect)->right;
nY2=LPRECT(m_rectTracker.m_rect)->bottom;
nWidth = nX2 - nX;
nHeight = nY2 - nY;
HDC hMemDC, hScrDC;
HBITMAP hBitmap, hOldBitmap;
hScrDC = CreateDC("DISPLAY", NULL, NULL, NULL);
hMemDC = CreateCompatibleDC(hScrDC);
hBitmap = CreateCompatibleBitmap(hScrDC, nWidth, nHeight);
hOldBitmap = (HBITMAP)SelectObject(hMemDC, hBitmap);
BitBlt(hMemDC, 0, 0, nWidth, nHeight, hScrDC , nX, nY, SRCCOPY);
hBitmap = (HBITMAP)SelectObject(hMemDC, hOldBitmap);
if (OpenClipboard())
{
//清空剪贴板
EmptyClipboard();
//把屏幕内容粘贴到剪贴板上,
//hBitmap 为刚才的屏幕位图句柄
SetClipboardData(CF_BITMAP, hBitmap);
//关闭剪贴板
CloseClipboard();
}
OnEditPaste();//将剪贴板上的图像显示出来的函数
DeleteDC(hScrDC);
DeleteDC(hMemDC);