各位朋友,大家好!
本人有个问题想请教大家,我希望在Picture控件上,利用鼠标响应事件画矩形框。我在程序中利用CDC* pDC,pDC->Retangle()画图,画出来的是填充式的矩形图案,请问大家,怎么改成只显示边框的。附上主要代码:
CPoint m_newpos;
CPoint m_oldpos;
在OnLButtonDown中:
CStatic* pPicture1 = (CStatic*)GetDlgItem(IDC_PictureShow);
pDC = (CDC*)pPicture1->GetDC(); // 取得CDC
m_newpos=point;
m_oldpos=point;
在OnLButtonUp中:
CStatic* pPicture1 = (CStatic*)GetDlgItem(IDC_PictureShow);
pDC = (CDC*)pPicture1->GetDC(); // 取得CDC
HBRUSH pbrush;
pbrush=(HBRUSH)pDC->SelectObject(HBRUSH(GetStockObject(NULL_BRUSH)));
pDC->SelectObject(pbrush);
if(GetCapture()!=this)
return;
pDC->Rectangle(CRect(m_newpos,point));
ReleaseDC(pDC);
ReleaseCapture();
在OnMouseMove中:
CStatic* pPicture1 = (CStatic*)GetDlgItem(IDC_PictureShow);
pDC = (CDC*)pPicture1->GetDC(); // 取得CDC
HBRUSH pbrush;
pbrush=(HBRUSH)pDC->SelectObject(HBRUSH(GetStockObject(NULL_BRUSH)));
pDC->SelectObject(pbrush);
if(GetCapture()!=this)
return;
int oldmode;
oldmode=pDC->GetROP2();
pDC->SetROP2(R2_NOT);
pDC->Rectangle(CRect(m_newpos,m_oldpos));
pDC->Rectangle(CRect(m_newpos,point));
pDC->SetROP2(oldmode);
m_oldpos=point;
请各位朋友指教,谢谢了!
------解决方案--------------------------------------------------------
pDC->SetROP2(oldmode);
pDC->Rectangle(CRect(m_newpos,point));
不过这样的效果好像也不好..缩小尺寸的时候好多黑色块...
------解决方案--------------------------------------------------------
还是用polyline的比较好,因为rectangle有画刷内部填充了.....
或是用moveto,lineto,这几个函数画矩形出来....
------解决方案--------------------------------------------------------
你是用HBrush来填充的pDC 画出来的当然是填充的图形 你可以用HPen的对戏那个来填充pDC 这样画出来的就是只有边框
画刷 画刷 画笔 画笔 楼主可以联系实际 想一想