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