我在OnDraw中画图形,我画的只是点、线、圆弧之类的图形。比如先画一个圆,再画一个矩形,当两个图形部分交叉时只能显示一个完整的矩形,而圆是残缺的。我想让圆和矩形都完整。谢谢!

解决方案 »

  1.   

    这个问题很简单,因为在绘制GDI图形时,如果你不选择画刷的话,那么系统会
    使用默认的白色画刷来填充你所绘制的图形,所以在你绘制矩形时它会把你原来绘制的圆遮蔽掉。
    解决这个问题的办法很简单,即在你绘制图形的时候你只需要先选择一个空的画刷即可:
    例如:
    pDC->SelectStockObject(NULL_BRUSH);
    pDC->Rectangle(CRect(0,0,100,100));
    pDC->Rectangle(CRect(50,50,150,150));
    你不妨试试。
      

  2.   

    先设置CDC::SetROP2 (...),不要用CDC::FillRect()
    可能分给得太少了哈.
      

  3.   

    //你不要使用Rectangle函数,因为它会使用当前brush填充你画的矩形
    //可以使用DrawEdge等很多函数完成你的需求,这样试一下。
    CRect aa(20,20,100,200);
    pDC->Ellipse(200,200,50,50);
    pDC->DrawEdge(&aa,EDGE_RAISED,BF_RECT);
      

  4.   

    照fwsland的作问题解决了,非常感谢!!风中王子提出的CDC::SetPOP2(...)好像在哪本书中见过,从来没用过,不过这也给我增加了学习的机会,谢谢,至于分少,我可以再给,但我不知在结贴时怎样给,麻烦你告诉我。柏哥:你也教了我一个新的函数DrawEdge();谢谢!
    我刚学vc,所以比较菜,望各位大虾指教!