SetROP2 实现橡皮绳功能 5C

我在利用 SetROP2时,这么写不能得到想要的效果,它会产生路径,但的确是有部分线
被重画掩盖了。麻烦大家看看!

鼠标移动响应:
if (pDrawObj->m_ptStart.x != -1 )
{

oldPen = dc.SetROP2(R2_NOTXORPEN);
pDrawObj->DrawSelf(dc);
pDrawObj->SetEndPoint(point);
pDrawObj->DrawSelf(dc);

dc.SetROP2 (oldPen); //还原
}

绘画:
```void CDrawShape::DrawSelf(CClientDC pDC)
{
CPen NewPen;
HPEN op;
NewPen.CreatePen(PS_SOLID, 2, RGB(0,0,0));
op = pDC.SelectPen(NewPen.m_hPen);

switch (m_ShapeType)
{
case 1:
    pDC.MoveTo(m_ptStart.x,m_ptStart.y,NULL);
    pDC.LineTo(m_ptEnd.x,m_ptEnd.y);

    break;
case 2:
    pDC.Ellipse(m_ptStart.x,m_ptStart.y,m_ptEnd.x,m_ptEnd.y);
    break;
}

pDC.SelectPen(op);

}

![
图片说明](https://img-ask.csdn.net/upload/201712/28/1514465617_88349.png)

2个回答

我已经发现问题了,绘制的endpoint设置的有问题。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐