怎样用鼠标在屏幕上画一条线?(如折线,直线,弧线)
然后在线的两侧画出平形线?最好能给出具体代码。我先谢谢各位高手啦!

解决方案 »

  1.   

    void C***::Draw(CDC* pDC)
    {
    OnPrepareDC(pDC , NULL);
    //略去画笔选择代码
    CPoint p1(10 , 50);
    CPoint p2(10 + 50 , 50);
    pDC->MoveTo(p1);
    pDC->LineTo(p2);
    }
      

  2.   

    在WM_LBUTTONDOWN事件记录起点,在WM_MOUSEMOVE事件调用InvalidateRect(...)重绘,在WM_LBUTTONUP事件中设置终点,创建平行线。
      

  3.   

    楼上二位都说得很对,另外建议楼主看一本叫做《Visual C++ 6.0编程实例与技巧》,机工出的,我当年就受益于此书,只是这本书有点早了
      

  4.   

    思路如 grasshopperliu(老前辈) 
    所说!
      

  5.   

    你说的这个问题就是找斜率.void CWrcimageView::VerticalPoint(CPoint FirstPoint,CPoint SecondPoint ,int nOffSet,CPoint *pFirstPoint,CPoint *pSecondPoint)
    {
    if(FirstPoint.y==SecondPoint.y)
    { pFirstPoint->y=FirstPoint.y-nOffSet/2;
    pSecondPoint->y=FirstPoint.y+nOffSet/2;
    pFirstPoint->x=pSecondPoint->x=FirstPoint.x;
    return ;
    }

    if(FirstPoint.x==SecondPoint.x)
    { pFirstPoint->x=FirstPoint.x-nOffSet/2;
    pSecondPoint->x=FirstPoint.x+nOffSet/2;
    pFirstPoint->y=pSecondPoint->y=FirstPoint.y;
    return ;
    }
    double k;
    k=(double)(SecondPoint.y-FirstPoint.y)/(SecondPoint.x-FirstPoint.x);

    pFirstPoint->y=(int)((double)1/2*nOffSet*sqrt(1/(1+k*k))+FirstPoint.y+0.5);
    pSecondPoint->y=2*FirstPoint.y-pFirstPoint->y;
    pFirstPoint->x=(int)(FirstPoint.x-(double)1/2*k*(pFirstPoint->y-pSecondPoint->y)+0.5);
    pSecondPoint->x=2*FirstPoint.x-pFirstPoint->x;
    //当FistPoint.x-SecondPoint.x等2或-2时会出现两点相等的情况,这时按坚直线处理
    if(*pFirstPoint==*pSecondPoint)
    {
    pFirstPoint->x=FirstPoint.x-nOffSet/2;
    pSecondPoint->x=FirstPoint.x+nOffSet/2;
    pFirstPoint->y=pSecondPoint->y=FirstPoint.y;

    }
    return ;
    }