当前位置:编程学习 > C#/ASP.NET >>

关于画圆弧的问题!

如果知道起点坐标(X1,Y1),终点坐标(X2,Y2)圆心坐标(X0,Y0)请问有什么办法画圆弧吗?
    请各位高手请教! --------------------编程问答-------------------- 用什么办法也画不出来,条件就不充足 --------------------编程问答--------------------
引用 1 楼 dapsxianfeng2010 的回复:
用什么办法也画不出来,条件就不充足


为什么?
那用什么比较好画啊? --------------------编程问答--------------------
引用 2 楼 ounce555 的回复:
引用 1 楼 dapsxianfeng2010 的回复:
用什么办法也画不出来,条件就不充足


为什么?
那用什么比较好画啊?

你自己想想啊,如果起点与终点到圆心的距离不相等那怎么画啊? --------------------编程问答-------------------- hehe  --------------------编程问答-------------------- 计算出中间的一些点(数量要够,保证平滑),然后依次画线 --------------------编程问答-------------------- 其实告诉你3个点 你再求出一个点不就成了....只是多点代码的事啦 --------------------编程问答-------------------- 那有高手能做个示范吗?做个例子看看好吗? --------------------编程问答-------------------- 那如果起点坐标(X1,Y1),终点坐标(X2,Y2)圆心坐标(0,0)请问有什么办法画圆弧吗? --------------------编程问答-------------------- 最简单和笨的办法就是画圆了!
--------------------编程问答-------------------- 用DrawAce
恩,如果你肯给100分的话,我给你全部代码 --------------------编程问答--------------------
引用 10 楼 yzxdc 的回复:
用DrawAce
恩,如果你肯给100分的话,我给你全部代码

求求帮忙了赐教下了! --------------------编程问答-------------------- 说了用drawace,自己去查MSDN,分不够懒得帮你写 --------------------编程问答-------------------- 抱歉,写错了是DrawArc --------------------编程问答--------------------
引用 13 楼 yzxdc 的回复:
抱歉,写错了是DrawArc

行行好了,帮帮忙了!
--------------------编程问答-------------------- 這好像是個數學問題
有圓心a,起點b,終點c,
如果 線段AB長度!=線段AC長度,那不是畫不出來
如果AB==AC,那就以A為圓心,AB為半徑畫就好 --------------------编程问答--------------------
引用 15 楼 l13873666736 的回复:
這好像是個數學問題
有圓心a,起點b,終點c,
如果 線段AB長度!=線段AC長度,那不是畫不出來
如果AB==AC,那就以A為圓心,AB為半徑畫就好

是的,就是AB==AC了,是一个正圆的一部分的了!那怎么画啊?我画了几次都没有画好! --------------------编程问答-------------------- 如果是正圆的圆弧(起点和终点到圆心距离相等),那可以画,也非常好画。

如果是个椭圆,那没法画,因为只有3个点不能确定一个椭圆。
--------------------编程问答--------------------
引用 17 楼 yuwenge 的回复:
如果是正圆的圆弧(起点和终点到圆心距离相等),那可以画,也非常好画。

 如果是个椭圆,那没法画,因为只有3个点不能确定一个椭圆。

UP。 --------------------编程问答-------------------- 我来做点好事吧,呵呵

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;
}

--------------------编程问答-------------------- 随机画? --------------------编程问答--------------------
引用 19 楼 strwangfan 的回复:
我来做点好事吧,呵呵
C# codeprotectedoverridevoid 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;
}

补充下:
在把起点与原点的连线角度和圆弧两个边的夹角的角度传给这个就可以了
e.Graphics.DrawArc(Pens.Black, rect,起点与原点的连线角度, 圆弧两个边的夹角的角度); --------------------编程问答-------------------- 唉!!三角函數都還給老師了

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");
--------------------编程问答--------------------
引用 22 楼 l13873666736 的回复:
唉!!三角函數都還給老師了
C# code
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");



那我想问下能用反正切函数吗?怎么啊?我怎么用的时候显示错误啊? --------------------编程问答--------------------
引用 23 楼 ounce555 的回复:
引用 22 楼 l13873666736 的回复:
唉!!三角函數都還給老師了
C# code
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");



那我想问下能用反正切函数吗?怎么啊?我怎么用的时候显示错误啊?


你反J1,J2 换成实数应该可以过的 --------------------编程问答--------------------
引用 24 楼 l13873666736 的回复:
引用 23 楼 ounce555 的回复:
引用 22 楼 l13873666736 的回复:
唉!!三角函數都還給老師了
C# code
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");


那我想问下能用反正切函数吗?怎么啊?我怎么用的时候显示错误啊?


你反J1,J2 换成实数应该可以过的


我也知道啊,我就还是因为这两个角度的问题,所有没有不好写! --------------------编程问答-------------------- 刚才百度了一把,还是没找到方法,以前平面几何可是我的强项啊,唉真的老了 --------------------编程问答-------------------- 坛子就有,自己好好搜索一下!
提示一下:好像是关于画弧线的吧,采用逼近的办法一个点一个点的画。记不清了!
找不到留言,我帮你找一下!
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,