为什么小弟我在picture控件上画上图之后,再在其上面画一个矩形框,鼠标停止画之后,那个矩形框总在图片的后面,看不见呢
为什么我在picture控件上画上图之后,再在其上面画一个矩形框,鼠标停止画之后,那个矩形框总在图片的后面,看不见呢?
代码如下:
void CTestDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // 蚚衾餅秶腔扢掘奻狟恅
SendMessage(WM_ICONERASEBKGND, reinterpret_cast <WPARAM> (dc.GetSafeHdc()), 0);
// 妏芞梓婓馱釬撻倛笢懈笢
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// 餅秶芞梓
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
CClientDC dc(this);
dc.SetROP2(R2_NOTXORPEN);
dc.Rectangle(m_startLock.x,m_startLock.y,m_endLock.x,m_endLock.y);
//AddRectangle(m_startLock,m_endLock);
}
然后
void CThemeConfigDlg::OnMouseMove(UINT nFlags, CPoint point)
{
CClientDC dc(this);
dc.SetROP2(R2_NOTXORPEN);
if(m_rectangle)
{
if(m_step==1)
{
if(m_end.x==0) dc.Rectangle(m_start.x,m_start.y,point.x,point.y);
else {dc.Rectangle(m_start.x,m_start.y,m_end.x,m_end.y);dc.Rectangle(m_start.x,m_start.y,point.x,point.y);}
}
}
m_end=point;
CDialog::OnMouseMove(nFlags, point);
}
如果不在picture上不放图片却可以.
------解决方案--------------------
重载picture控件的ondraw函数,在ondraw里画矩形
代码如下:
void CTestDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // 蚚衾餅秶腔扢掘奻狟恅
SendMessage(WM_ICONERASEBKGND, reinterpret_cast <WPARAM> (dc.GetSafeHdc()), 0);
// 妏芞梓婓馱釬撻倛笢懈笢
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// 餅秶芞梓
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
CClientDC dc(this);
dc.SetROP2(R2_NOTXORPEN);
dc.Rectangle(m_startLock.x,m_startLock.y,m_endLock.x,m_endLock.y);
//AddRectangle(m_startLock,m_endLock);
}
然后
void CThemeConfigDlg::OnMouseMove(UINT nFlags, CPoint point)
{
CClientDC dc(this);
dc.SetROP2(R2_NOTXORPEN);
if(m_rectangle)
{
if(m_step==1)
{
if(m_end.x==0) dc.Rectangle(m_start.x,m_start.y,point.x,point.y);
else {dc.Rectangle(m_start.x,m_start.y,m_end.x,m_end.y);dc.Rectangle(m_start.x,m_start.y,point.x,point.y);}
}
}
m_end=point;
CDialog::OnMouseMove(nFlags, point);
}
如果不在picture上不放图片却可以.
------解决方案--------------------
重载picture控件的ondraw函数,在ondraw里画矩形