图像显示出现问题?

pqw520 2008-03-24 03:41:45
打开一幅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);
...全文
47 3 打赏 收藏 举报
写回复
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
pqw520 2008-03-24
  • 打赏
  • 举报
回复
to:jennyvenus
不是啊,我就算去掉OnEditPaste函数,然后在画图板里粘贴图像,显示的也跟用OnEditPaste 函数一样啊!
我认为是不是前面的位图句柄赋值时出了问题。
智能卡_Snooper 2008-03-24
  • 打赏
  • 举报
回复
问题应该出在你的OnEditPaste

前面的矩形假设你算好了。
vcPlayer 2008-03-24
  • 打赏
  • 举报
回复
记住一点,很重要: BMP图像数据是按行序倒着存放的!
相关推荐
发帖
图形处理/算法

1.9w+

社区成员

VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
帖子事件
创建了帖子
2008-03-24 03:41
社区公告
暂无公告