请问一下这程序有什么问题,我想实现,点击“直线”-“DDA算法生成直线”然后在窗口内点击鼠标生成一条直线。源代码在附件里

解决方案 »

  1.   


    switch(pdoc->m_iMenuSelect)
    {
    case ID_DDALINE:
    case ID_BRESENHAMLINE:
    case ID_MIDPOINTLINE:
    void CGraphicView::OnLButtonUp(UINT nFlags, CPoint point) 
    {
    // TODO: Add your message handler code here and/or call default
        CGraphicDoc *pdoc = GetDocument();
    CClientDC dc(this);
    CPoint s, e;
    CRect rect;
    double radius;
    int r;
    switch(pdoc->m_iMenuSelect)
    {
    case ID_DDALINE:
    case ID_BRESENHAMLINE:
    case ID_MIDPOINTLINE:
    pdoc->m_pointEnd = point; //请同学们实现算法 
    MyDrawLine(pdoc->m_pointStart, pdoc->m_pointEnd);


    }
    CView::OnLButtonUp(nFlags, point);
    }
      

  2.   

    在OnMouseMove()中先擦除先前画的线,然后新画一条,你的算法会很慢的CDC::SetROP2();好好看看书吧,别急 temppen.CreatePen (PS_DOT,0,RGB(255,200,200));
    mvcdc->SelectObject (&temppen);
    mvcdc->SetROP2 (R2_NOTXORPEN);
    mvcdc->MoveTo (firstpoint);
    mvcdc->LineTo (secondpoint);
    secondpoint = point;
    mvcdc->MoveTo (firstpoint);
    mvcdc->LineTo (secondpoint);
    temppen.DeleteObject ();