你能帮我用c#来帮助我做到这一点。
我有一个GDI +电话如下:
graphics.FillPie(Brushes.White, _
new Rectangle(0, 0, 400, 150), 0 - 90, 77.783651160272726f);
graphics.DrawArc(new System.Drawing.Pen(Brushes.Black, 2), _
new RectangleF(0, 0, 400, 150), 0 - 90, 77.783651160272726f);
我的要求是找到贝塞尔曲线/形状(饼图,弧线)上的所有点。
即,我需要在我的方法中重绘形状,该方法只接受点数组。我只有矩形坐标,起始角度和扫掠角度。任何人都可以让我知道.net中是否有任何inbuild方法来计算这个或者是否有任何简单的方法来找到这个。
如果您需要任何其他信息,请与我们联系。请帮助我,因为这对我来说非常关键,因为我不是数学上的天才。
提前致谢。
此致 詹姆斯
答案 0 :(得分:3)
答案 1 :(得分:1)
你真的必须将它表示为一系列点数吗?
如果您可以灵活地使用方法签名,而不是Point[]
接受GraphicsPath
,那么您可以通过合并这两个部分在C#中表示此曲线。
编辑:添加示例
例如,您可以像这样创建GraphicsPath
:
GraphicsPath path = new GraphicsPath();
path.AddPie(new Rectangle(0, 0, 400, 150), -90, 77.78f);
path.AddArc(new Rectangle(0, 0, 400, 150), -90, 77.78f);
您可以稍后使用它来使用Graphics.DrawPath
方法绘制图形,或通过GraphicsPath.PathPoints
,GraphicsPath.PathTypes
和GraphicsPath.PointCount
属性访问图形路径数据。
答案 2 :(得分:1)
将弧/曲线添加到GraphicsPath对象,使用Flatten method将路径中的Bezier曲线近似为线段,并使用PathPoints property获取点阵列。
答案 3 :(得分:0)
你需要一些数学,但幸运的是没有什么疯狂的。该网站解释了如何通过计算圆圈来绘制圆圈:
http://www.nsbasic.com/palm/info/technotes/TN25a.htm
它不在C#中,但应该让你知道它是如何工作的。 Math.Sin()
和Math.Cos()
是.NET的罪和cos方法。