那如果起点坐标(X1,Y1),终点坐标(X2,Y2)圆心坐标(0,0)请问有什么办法画圆弧吗?

解决方案 »

  1.   

    用DrawAce
    恩,如果你肯给100分的话,我给你全部代码
      

  2.   

    说了用drawace,自己去查MSDN,分不够懒得帮你写
      

  3.   

    這好像是個數學問題
    有圓心a,起點b,終點c,
    如果 線段AB長度!=線段AC長度,那不是畫不出來
    如果AB==AC,那就以A為圓心,AB為半徑畫就好
      

  4.   

    是的,就是AB==AC了,是一个正圆的一部分的了!那怎么画啊?我画了几次都没有画好!
      

  5.   

    我来做点好事吧,呵呵protected override void OnPaint(PaintEventArgs e)
    {
          base.OnPaint(e);       // 起点
            Point startPoint = new Point(10, 10);       // 终点
            Point endPoint = new Point(200, 200);       // 圆心
            Point center = new Point(100, 100);       Rectangle rect = GetRect(startPoint, endPoint, center);
           e.Graphics.DrawArc(Pens.Black, rect, 180, 180);
    }private Rectangle GetRect(Point startPoint, Point endPoint, Point center)
    {
          // 创建圆弧所在的矩形rect。
           Rectangle rect = new Rectangle();      // 根据起点、终点坐标求rect的长和宽。
           rect.Width = rect.Height = Convert.ToInt32(Math.Sqrt(Math.Pow((startPoint.X - endPoint.X), 2) + Math.Pow((startPoint.Y - endPoint.Y), 2)) / 2);      // 把圆心的横众坐标减去一半长宽得到rect的位置坐标。
           rect.Location = new Point(center.X - rect.Width / 2, center.Y - rect.Height / 2);      return rect;
    }
      

  6.   

    补充下:
    在把起点与原点的连线角度和圆弧两个边的夹角的角度传给这个就可以了
    e.Graphics.DrawArc(Pens.Black, rect,起点与原点的连线角度, 圆弧两个边的夹角的角度);
      

  7.   

    唉!!三角函數都還給老師了System.Drawing.Bitmap b = new Bitmap("c:\\a.bmp");
                System.Drawing.Graphics g = Graphics.FromImage(b);
                Pen p = new Pen(Color.Red, 2);
                //以100,100為圓心 范圍為200*200的正方形
                  //用三角函數求得兩個點的角度J1,J2 (三角函數都還給老師了,汗)
                g.DrawArc(p, 0,0, 200, 200, J1, J2);
                
                b.Save("c:\\b.bmp");