public partial class Page : UserControl ... { private System.Windows.Threading.DispatcherTimer t = new System.Windows.Threading.DispatcherTimer(); private bool tcontrol = false; private int count = 0; private Path ph = new Path(); public Page() ...{ InitializeComponent(); t.Interval = new TimeSpan(0, 0, 0, 0, 500); t.Tick += new EventHandler(t_Tick); } void t_Tick(object sender, EventArgs e) ...{ count++; this.drawsaface.Children.Remove(ph); ph.Stroke = new SolidColorBrush ...{ Color = Color.FromArgb((byte)100, (byte)0, (byte)255, (byte)0) }; ph.StrokeThickness = 3; int N = 500; String pd = get_sin(100, 300, count % N, 200, 4, N); ph.SetValue(System.Windows.Shapes.Path.DataProperty, pd); this.drawsaface.Children.Add(ph); } private void testButton_Click(object sender, RoutedEventArgs e) ...{ if (!tcontrol) ...{ t.Start(); tcontrol = true; } else ...{ t.Stop(); tcontrol = false; } } private String get_sin(int x0, int y0, double phi, double pp, double T, int N) ...{ String dt = "M " + x0 + "," + (pp * Math.Sin(phi) + y0); for (int i = 1; i < N; i++) ...{ dt += " L " + (i + x0) + "," + (pp * Math.Sin((i - 1) * 2 * 3.14 * T / N + phi) + y0) + " " + (i + x0) + "," + (pp * Math.Sin(i * 2 * 3.14 * T / N + phi) + y0); } return dt; } }