用DrawArc(Pen,int,int,int,int,int,int)画了一条圆弧,我知道它的起点坐标和终点坐标,我想求这条圆弧上离终点坐标很近的一个点的坐标(很接近就可以,但必须是这条圆弧上面的),如何实现??

解决方案 »

  1.   

    这样的话你应该先有自己的弧线函数,然后根据这个弧线函数得到DrawArc(Pen,int,int,int,int,int,int)需要的点和终点的斜率。或者根据画图函数的点求得弧线函数,然后得到终点的斜率,这个还真是数学问题,查查数学书和计算机图形学看看吧
      

  2.   

    (1)三个点坐标带入方程(x-a)2+(y-b)2=r2,可以求出a、b、r;
    (2)求经过圆心坐标、终点坐标的线的斜率k;
    (3)(假设k不是无穷大或0)可以得出经过终点的弧的切线方程:y-y3=-1/k(x-x3);
    画小三角的位置可以依此线确定。
      

  3.   

    ...不是,我就是想要求这点,然后求通过这两点直线的斜率,因为我要在这条直线上画个小三角?
    用相邻的离散点来求斜率误差很大,建议不要用这种思路。有兴趣的话你可从弧线函数入手。如果要画小三角则很容易。
    GDI+的画笔可以指定起点和终点的形状,比如pen.EndCap = LineCap.ArrowAnchor就在线段的终点画了一个小箭头。如果小箭头或其他内置的形状不满足你的需求,还可以自定义线头和线尾的形状:
    // 创建一个自定义的形状
    GraphicsPath arrowPath = new GraphicsPath();
    arrowPath.AddLine(new Point(-2, -3), new Point(0, 0));
    arrowPath.AddLine(new Point(0, 0), new Point(+2, -3));// 创建画笔,并指定线尾的形状。
    Pen pen = new Pen(Color.DarkCyan, 3);
    pen.EndCap = LineCap.Custom;
    pen.CustomEndCap = new CustomLineCap(null, arrowPath);// 画弧
    e.Graphics.DrawArc(pen, 0,0,100,200, 45, 270);