如初. 2019-01-07 13:09 采纳率: 0%
浏览 287

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;                                      //删除动态创建的画笔
        }
  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-20 21:13
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

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

报告相同问题?

悬赏问题

  • ¥35 平滑拟合曲线该如何生成
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站