BenPhillip 2016-10-13 09:37 采纳率: 100%
浏览 2538
已采纳

VS2015MFC中绘制椭圆的问题

void CGZPPaintView::OnDraw(CDC* pDC)
{
CGZPPaintDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
if(m_draw_type!=NoDraw)
{ pDC->SelectObject(&m_pen);
switch(m_draw_type)
{case PLine:
pDC->SetROP2(R2_NOTXORPEN);
pDC->MoveTo(this->m_start_point);
pDC->LineTo(this->m_pre_end_point);
pDC->MoveTo(this->m_start_point);
pDC->LineTo(this->m_end_point);
this->m_pre_end_point=m_end_point;
break;
case PRectangle:
pDC->SetROP2(R2_NOTXORPEN);
pDC->Rectangle(CRect(m_start_point,m_pre_end_point));
pDC->Rectangle(CRect(m_start_point,m_end_point));
this->m_pre_end_point = m_end_point;
break;
case PEllipse:
pDC->SetROP2(R2_NOTXORPEN);
pDC->Ellipse(CRect(m_start_point,m_pre_end_point));
pDC->Ellipse(CRect(m_start_point,m_end_point));
this->m_pre_end_point = m_end_point;
break;

    }
}

}

void CGZPPaintView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
if(this->m_draw_type!=NoDraw)
{
switch(m_draw_type)
{
case PLine:
this->m_start_point=point;
this->m_pre_end_point=point;
break;

    case PRectangle:
        this->m_start_point=point;
        this->m_pre_end_point=point;
        break;
    case PEllipse:
        this->m_start_point=point;
        this->m_pre_end_point=point;
        break;
    }
}

CView::OnLButtonDown(nFlags, point);

}

void CGZPPaintView::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
if(nFlags==MK_LBUTTON)
{
this->m_end_point=point;
this->Invalidate(FALSE);
}

CView::OnMouseMove(nFlags, point);

}

在VC++6.0 当中能绘制正常的椭圆 。但是在VS2015中
左上角已经没有被擦除

  • 写回答

1条回答 默认 最新

  • threenewbee 2016-10-13 13:31
    关注

    有残影?先FillRectangle清除下客户区

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮