在WPF中绘制正弦波

4

这个问题看起来很傻,但我已经挣扎了一个小时还是无法解决。

如何在WPF中绘制正弦波?

谢谢。

3个回答

4

使用Math.Sin函数计算出各点位置并将它们之间连线。你需要决定每个循环要使用多少个点,这是速度和精度之间的妥协。显然,你还需要根据屏幕上的区域对振幅进行缩放,因为Sin函数的返回值在+1和-1之间。


3

你如何进行“绘图”?WPF没有像Winforms那样的OnPaint事件,所以可能会有些棘手。在WinForms中完成此操作的方法是使用Graphics.DrawBezier方法。

e.Graphics.DrawBezier(new Pen(new SolidBrush(Color.Red)), 
                          new Point(0, 100), 
                          new Point(50, 0), 
                          new Point(50, 200), 
                          new Point(100, 100));

也许这对你有所帮助,但我甚至不确定如何直接绘制到WPF画布上。
快速浏览MSDN,它有一个BezierSegment控件,可能对你有用。

2
如果你想在点之间有曲线,可以使用PolyBezier来绘制正弦波,其中的PointCollection是由Math.Sin方法计算得出的。或者你也可以创建很多贝塞尔曲线段,让它们相互连接。最后,只需将你的PolyBezier或BezierSegments添加到绘图区域中,使用drawingarea.Children.Add(curve),其中drawing area是你要绘制到的网格或画布。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接