在WPF中绘制螺旋的示例代码?

时间:2011-02-06 11:31:43

标签: c# wpf wpf-controls

我在Google上搜索我什么都没找到。你知道吗?

1 个答案:

答案 0 :(得分:10)

找到螺旋方程(你必须决定一个,不同类型的螺旋存在),即:http://mathworld.wolfram.com/ArchimedesSpiral.html一个在极坐标中呈现。鉴于此,您需要对其进行近似,例如通过线条。这就是我要去的方式。 所以我可以发布一些代码作为一个例子,我在一个新的wpf应用程序中编写,我从xaml中删除了默认网格(如果你想尽快测试代码,则必需):

 public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            Path p = new Path();
            p.Data = CreateSpiralGeometry(1000, new Point() { X = 200, Y = 180 },Math.PI*10, 100);
            p.Stroke = Brushes.Black;

            AddChild(p);
        }

        private PathGeometry CreateSpiralGeometry(int nOfSteps, Point startPoint, double tetha, double alpha)
        {
            PathFigure spiral = new PathFigure();
            spiral.StartPoint = startPoint;


            for(int i=0;i<nOfSteps;++i)
            {
                var t = (tetha/nOfSteps)*i;
                var a = (alpha/nOfSteps)*i;
                Point to = new Point(){X=startPoint.X+a*Math.Cos(t), Y=startPoint.Y+a*Math.Sin(t)};
                spiral.Segments.Add(new LineSegment(to,true));
            }
            return new PathGeometry(new PathFigure[]{ spiral});
        }



    }