MFC 在图片控件上 bmp位图和 CRectTracker 橡皮筋不能同时画
问下大家一个问题,困扰好几天了。 我在picture控件上,pDC->StretchBlt(...)将位图显示在picture控件上。 之后要用橡皮筋来选择一部门位图区域。
加载位图过程:(按钮事件,在OnPaint()里也加载了一遍)
1、onbtbOpenBmp()
{
HBITMAP OldBitmap;
CDC MemDC;
MemDC.CreateCompatibleDC(pDC);
OldBitmap=(HBITMAP)MemDC.SelectObject(m_hBitmap); //m_hBitmap 全局变量,是动态加载的位图。
CBitmap* pBitmap = CBitmap::FromHandle(m_hBitmap);
if(m_bmW == 0 || m_bmH == 0)
return ;
CRect rect;
GetDlgItem(IDC_STATIC_PIC)->GetWindowRect(&rect);
ScreenToClient(&rect);
/**//*str.Format("%d %d", rect.Width(),rect.Height());
MessageBox(str);*/
// pDC->BitBlt(x,y,rect.Width(),rect.Height(),&MemDC,0,0,SRCCOPY);
pDC->SetStretchBltMode(HALFTONE);
pDC->StretchBlt(x,y,rect.Width(),rect.Height(),&MemDC,0,0,m_bmW,m_bmH,SRCCOPY);
//GetRGB(MemDC);
MemDC.SelectObject(OldBitmap);
}
2、 橡皮筋是 OnLButtonDown 事件。 因为里边有Invalidate(true);所以每次鼠标按下时,picture里边的位图就消失不见了。
我要怎么处理呢,位图是动态选择加载进来的,要怎样才能Invalidate时对控件上的位图没影响,也就是能看见