CPoint pt1(100,90);
CPoint pt2(400,400);

pDC->MoveTo(pt1);
pDC->LineTo(pt2);这是一个斜线,要求从pt2位置以45度角度向上画一条线,谢谢了。

解决方案 »

  1.   

    CPoint pt1(100,90);
    CPoint pt2(400,400);
    CPoint pt3(500,300);pDC->MoveTo(pt1);
    pDC->LineTo(pt2); 
    pDC->LineTo(pt3); 
      

  2.   

    45度不是太简单了,连三角函数都不要,x,y个加三百像素就成了。
    向右上45的就这样
    pDC->MoveTo(pt2);
    pt2.x+=400;
    pt2.y-=400;
    pDC->LineTo(pt2);
      

  3.   

    我要的是计算过程,pt1,pt2是任意可变数字。
    都说简单,没一个给出具体计算过程的?
      

  4.   

    长度应该固定的吧,
    p2.x=p1.x+length*sin(45);
    p2.y=p2.y+length*cos(45)
      

  5.   

    我自己写的,发你看看,你先把直线求出来,然后调用这个//坐标转换
    //BasePoint为直线起点,把他作为原点旋转
    //TransPoint为需要转换的点
    //Angle为需要转换的角度
    CPoint CCLaneView::CoordTransformation(CPoint BasePoint, CPoint TransPoint, double Angle)
    {
    CPoint ptRt;
    int xx1, yy1;
    double len = sqrt((TransPoint.x-BasePoint.x) * (TransPoint.x-BasePoint.x) + (TransPoint.y-BasePoint.y) * (TransPoint.y-BasePoint.y));
    double ang = GetAngle( BasePoint, TransPoint ); //转换后的坐标
    xx1 = int(BasePoint.x + len * cos(Angle+ang ));
    yy1 = int(BasePoint.y + len * sin(Angle+ang ));
    ptRt.x = xx1;
    ptRt.y = yy1;
    return ptRt;
    }
      

  6.   

    //求2点间的线段相对与水平线的夹角
    //BasePoint为线段起点
    //TransPoint为线段的终点
    double CCLaneView::GetAngle(CPoint BasePoint, CPoint TransPoint)
    {
    //Added by zhaobin at 2007/11/9
    //求atan即可,不需要acos
    double len = sqrt((TransPoint.x-BasePoint.x) * (TransPoint.x-BasePoint.x) + (TransPoint.y-BasePoint.y) * (TransPoint.y-BasePoint.y));
    double angle;

    if (((BasePoint.x - TransPoint.x) == 0 ) && ((BasePoint.y-TransPoint.y) == 0))
    angle = 0;
    else if ((BasePoint.x - TransPoint.x) == 0)
    {
    if(TransPoint.y>BasePoint.y )
    angle = pi / 2;
    else
    angle = pi * 3 / 2;
    }
    else if((BasePoint.y-TransPoint.y) == 0)
    {
    if(BasePoint.x>TransPoint.x)
    angle = pi;
    else
    angle = 0;
    }
    else
    {
    double kk = (double)((TransPoint.x-BasePoint.x) / len);
    angle = (double)acos(kk);
    if(TransPoint.y < BasePoint.y)
    angle = (pi * 2) - angle;
    }
    return angle;
    }这个函数写的很笨,直接用atan2就可以得到角度了...
      

  7.   


    //斜率
    float theta = 45*Pi/180;
    k = tan(theta);
    y = k*x - k*pt2.x + pt2.y;//直线方程直线方程都可以求出来,那么直线上任意一点都可以求了
      

  8.   


    45度吗,就是正方形对角线了,只要前后两个点对应的坐标值的x和y的差值相同就没有问题了,应该是这样。即:x1-x2=y1-y2
    CPoint pt1(200,200); 
    CPoint pt2(400,400); pDC->MoveTo(pt1); 
    pDC->LineTo(pt2);