关于画圆弧的问题! 那如果起点坐标(X1,Y1),终点坐标(X2,Y2)圆心坐标(0,0)请问有什么办法画圆弧吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用DrawAce恩,如果你肯给100分的话,我给你全部代码 说了用drawace,自己去查MSDN,分不够懒得帮你写 這好像是個數學問題有圓心a,起點b,終點c,如果 線段AB長度!=線段AC長度,那不是畫不出來如果AB==AC,那就以A為圓心,AB為半徑畫就好 是的,就是AB==AC了,是一个正圆的一部分的了!那怎么画啊?我画了几次都没有画好! 我来做点好事吧,呵呵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;} 补充下:在把起点与原点的连线角度和圆弧两个边的夹角的角度传给这个就可以了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"); 在VS2005中双击.aspx文件却是在记事本中打开的,而且是乱码。 今天看到一个很奇葩的写法,抽象类内部全是静态方法 急 DataGridViewCheckBoxColumn问题?? USB监控 将一个月按要求分为4周,解决即给分!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! DataSet 和 DataTable的转换 session 丢失的问题 高手帮忙!为什么VC++和C#的表现这么不一样? 求助:asp.net项目复制到本地并设为web共享后出现重大问题! 编译时生成的.exe文件名是由什么决定的? 应用母版页之后,怎么在子页中应用JS 又是两矩形问题!呵呵
恩,如果你肯给100分的话,我给你全部代码
有圓心a,起點b,終點c,
如果 線段AB長度!=線段AC長度,那不是畫不出來
如果AB==AC,那就以A為圓心,AB為半徑畫就好
{
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.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");