我在void CTextView::OnLButtonDown(UINT nFlags, CPoint point) 中先画了一个圆,填充了黄色:
CClientDC dc(this);
CBrush brush;       //   Must   initialize! 
brush.CreateSolidBrush(RGB(255,255,0));       
CBrush*   pTempBrush   =   NULL; 
pTempBrush   =   (CBrush*)dc.SelectObject(brush); 
dc.Ellipse (point.x-10, point.y-10, point.x+10, point.y+10);
dc.SelectObject(brush);
brush.DeleteObject();
然后根据不同条件画矩形填充蓝色:
CRect rcold(10+5*i/2+20,600-2*i/2,15+5*i/2+20,610);
CBrush   pbrushl;       //   Must   initialize! 
pbrushl.CreateSolidBrush(RGB(48,245,61)); 
dc1.Rectangle(10+5*i/2+20,600-2*i/2,15+5*i/2+20,610); //矩形
dc1.FillRect(rcold,&pbrushl);   
为什么执行填充蓝色矩形代码的时候把我上面圆的颜色给去掉变成透明的了呢?? 

解决方案 »

  1.   

    自从有了OPENCV 就没用过MFC的画图工具了
      

  2.   

    pTempBrush = (CBrush*)dc.SelectObject(brush);  
    -------------------
    上边这一句 brush前应该加 引用符 & 吧
      

  3.   

    有可能是你在不同的消息响应函数中画的图不一致,比如你在OnLButtonDown中画了圆,你在别的函数中再画矩形就可能导致重绘时圆没有得到绘制,或者刷子的设置不一致等。我建议其它函数只传递状态,绘制的工作全部交给OnPaint或者OnDraw试试看。