我有一个问题让我拉掉了头发的最后一根头发。 我正在努力重现一个有角度的椭圆弧 我的c#winform应用程序使用从DXF中提取的数据。
数据如下:
Centerpoint at X : 597,5;
Centerpoint at Y : 185;
Endpoint of major axis, relative to the center (X): 35,9651502358374;
Endpoint of major axis, relative to the center (Y): 60,0542085828599;
Ratio of minor axis to major axis : 0,35714285714286;
Start parameter : 4,78575772944812;
End parameter : 7,78061288491105;
代码:
float ex = 597,5; //Centerpoint at X
float ey = 185; //Centerpoint at Y
float exb = 35,9651502358374; //Endpoint of major axis (X)
float eyb = 60,0542085828599; //Endpoint of major axis (Y)
float EllipseRatio = 0,35714285714286;
double sa = 4,78575772944812; //Start parameter
double ea = 7,78061288491105; //End parameter
sa = double.Parse(exb.ToString()) * Math.Cos(sa) + //Now it's a Start angle
double.Parse(eyb.ToString()) * Math.Sin(sa);
ea = 2 * double.Parse(exb.ToString()) * Math.Cos(ea) + //Now it's a sweep angle
double.Parse(eyb.ToString()) * Math.Sin(ea);
double angle = Math.Atan(exb / eyb); //Rotation angle
Graphics ellipse = this.CreateGraphics();
ellipse.TranslateTransform(ex, ey); //So I can rotate at center
ellipse.RotateTransform(float.Parse(angle.ToString()));
ellipse.DrawArc(PreviewPen, (0 - exb), eyb, 2 * exb, 2 * eyb * EllipseRatio,
float.Parse(sa.ToString()), float.Parse(ea.ToString()));
看起来应该是这样的;
相反它看起来像这样:
如您所见,除椭圆外,所有形状都可以。
我无法做对。艾德尔的位置是错误的,或者 方向错误,大小,形状,角度......
在某些时候我接近了,但后来我的思维引擎爆炸了。
我没有使用e.graphics。
如果可以,请详细说明。