14 个解决方案
#1
大神快快来
#2
我也遇到相同的问题,坐等大神来
#3
重载Picture控件,在里面画图。
#4
对MFC不是很熟,如何重载Picture控件,能不能具体一点,谢谢!
#5
使用MFC类CRectTracker//像皮筋类就可以实现画矩形,通过橡皮筋类得到的Rect来重新对图片进行定位画出来就可以了。
//.h
CRectTracker m_rectTracker; //像皮筋类
//.cpp
void CSDIForCWPView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
m_rectTracker.TrackRubberBand(this,point,TRUE);
m_rectTracker.m_rect.NormalizeRect();
CView::OnLButtonDown(nFlags, point);
this->SendMessage(WM_LBUTTONUP,NULL,NULL);
}
void CSDIForCWPView::OnLButtonUp(UINT nFlags, CPoint point)
{
...
CDC *pDC = GetDC();
CDC dc;
dc.CreateCompatibleDC(pDC);
CBitmap bmp;
bmp.CreateCompatibleBitmap(pDC,m_rectTracker.m_rect.Width()-2,m_rectTracker.m_rect.Height()-2);
CBitmap *pOldBmp;
pOldBmp = dc.SelectObject(&bmp);
dc.BitBlt(0,0,m_rectTracker.m_rect.Width()-2,m_rectTracker.m_rect.Height()-2,
&m_dcComplex,m_rectTracker.m_rect.left+1,m_rectTracker.m_rect.top+1,SRCCOPY);
dc.SelectObject(pOldBmp);
...
...
}
#6
现在是点击picture控件内的图片,都没有调用OnLButtonDown函数,为什么会这样?
#7
大神指点一下吧
#8
顶一下,别沉了
#9
因为你没有设置picture控件的Notify属性
#10
你所说的notyfy属性是指将其改为True还是重载picture控件类,以CStatic为基类,设置dwStyle |= SS_NOTIFY;
ps:我试过将Notify属性改为True,改完之后,在picture控件上按下鼠标就开始画矩形,我本来是要实现点击处理图像按钮后在在picture控件上画矩形,现在还没点处理按钮就开始有鼠标响应。请问如何实现我本来的目标。
#11
两种方式都可以。如果只是处理picture中的图片,建议还是继承CStatic比较好。
#12
#13
现在可以在picture控件上画矩形框了,问题是不管鼠标从哪个点开始画,它都默认将控件左上角作为矩形的左上角。请问这个问题怎么解决?
#14
楼主,这个问题解决了没?我现在也碰到这种问题了,具体如何处理啊?
#1
大神快快来
#2
我也遇到相同的问题,坐等大神来
#3
重载Picture控件,在里面画图。
#4
对MFC不是很熟,如何重载Picture控件,能不能具体一点,谢谢!
#5
使用MFC类CRectTracker//像皮筋类就可以实现画矩形,通过橡皮筋类得到的Rect来重新对图片进行定位画出来就可以了。
//.h
CRectTracker m_rectTracker; //像皮筋类
//.cpp
void CSDIForCWPView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
m_rectTracker.TrackRubberBand(this,point,TRUE);
m_rectTracker.m_rect.NormalizeRect();
CView::OnLButtonDown(nFlags, point);
this->SendMessage(WM_LBUTTONUP,NULL,NULL);
}
void CSDIForCWPView::OnLButtonUp(UINT nFlags, CPoint point)
{
...
CDC *pDC = GetDC();
CDC dc;
dc.CreateCompatibleDC(pDC);
CBitmap bmp;
bmp.CreateCompatibleBitmap(pDC,m_rectTracker.m_rect.Width()-2,m_rectTracker.m_rect.Height()-2);
CBitmap *pOldBmp;
pOldBmp = dc.SelectObject(&bmp);
dc.BitBlt(0,0,m_rectTracker.m_rect.Width()-2,m_rectTracker.m_rect.Height()-2,
&m_dcComplex,m_rectTracker.m_rect.left+1,m_rectTracker.m_rect.top+1,SRCCOPY);
dc.SelectObject(pOldBmp);
...
...
}
#6
现在是点击picture控件内的图片,都没有调用OnLButtonDown函数,为什么会这样?
#7
大神指点一下吧
#8
顶一下,别沉了
#9
因为你没有设置picture控件的Notify属性
#10
你所说的notyfy属性是指将其改为True还是重载picture控件类,以CStatic为基类,设置dwStyle |= SS_NOTIFY;
ps:我试过将Notify属性改为True,改完之后,在picture控件上按下鼠标就开始画矩形,我本来是要实现点击处理图像按钮后在在picture控件上画矩形,现在还没点处理按钮就开始有鼠标响应。请问如何实现我本来的目标。
#11
两种方式都可以。如果只是处理picture中的图片,建议还是继承CStatic比较好。
#12
#13
现在可以在picture控件上画矩形框了,问题是不管鼠标从哪个点开始画,它都默认将控件左上角作为矩形的左上角。请问这个问题怎么解决?
#14
楼主,这个问题解决了没?我现在也碰到这种问题了,具体如何处理啊?