MFC绘制椭圆时,为什么会出现鼠标拖动时与松开鼠标时线型不一致的问题?

void CEllipse::Draw(CDC *pDC)
{
    CPen *pPen,*pOldPen;    //定义两个画笔指针变量 
    CBrush *pBrushOld,BrushNew;
    pPen=new  CPen(m_nLineType,m_nLineWidth,m_LineColor); 
    pOldPen=(CPen *)pDC->SelectObject(pPen); 
    SetCurrentBrush(BrushNew);
    pBrushOld=pDC->SelectObject(&BrushNew);
    pDC->Ellipse(m_TopLeft.x,m_TopLeft.y,m_BottomRight.x,m_BottomRight.y);
    pDC->SelectObject(pOldPen);  //恢复旧画笔 
    delete pPen;                 //删除动态创建的画笔
    pDC->SelectObject(pBrushOld);
    BrushNew.DeleteObject();
}


OnLButtonDown

SetCapture();           //捕获鼠标
        ::SetCursor(m_hCursor); //设置十字光标
        m_StartPos = m_EndPos = point;     //获取线段起点
        m_nMouseStep++;
        m_BDrawing=FALSE;
        break;

OnLButtonUp

pDC->SetROP2(m_nDrawMode);
        m_nMouseStep=0;
        m_BDrawing=TRUE;
        ReleaseCapture();
        CEllipse *pEllipse;
        pEllipse=new CEllipse(m_StartPos,m_EndPos,m_nPenType,m_nPenWidth,m_PenColor,m_nFillPattern,m_FillColor);
        pEllipse->Draw(pDC);
        pDoc->m_FigureList.AddTail(pEllipse);
        break;

OnMouseMove

if(m_nMouseStep==1 && !m_BDrawing)
        {
            CPoint temppoint=point;
            CPen *pPen,*pOldPen;    //定义两个画笔指针变量 
            pPen=new CPen(m_nPenType,m_nPenWidth,m_PenColor); 
            pOldPen=(CPen *)pDC->SelectObject(pPen); 
            m_nDrawMode=pDC->SetROP2(R2_NOTXORPEN);
            pDC->Ellipse(m_StartPos.x,m_StartPos.y,m_EndPos.x,m_EndPos.y);
            m_EndPos=temppoint;
            pDC->Ellipse(m_StartPos.x,m_StartPos.y,m_EndPos.x,m_EndPos.y);
            pDC->SelectObject(pOldPen);          //恢复旧画笔 
            delete pPen;                                      //删除动态创建的画笔
        }
不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^