0

我有一个画布,可以在上面进行手绘(类似于这个http://www.windowsphonegeek.com/tips/drawing-in-wp7-2-drawing-shapes-with-finger)。我的要求是,我必须以编程方式播放和暂停绘图。有一个按钮,点击后应该按照绘制的方式播放。如果有任何示例应用程序或链接可用,请指导我应该采取哪些步骤来实现这一点。谢谢。

4

1 回答 1

0

更新:我终于解决了这个问题,所以它可以在 Windows Phone 7 中工作,而不仅仅是 WPF。

根据您引用的示例。

定义点列表:

private List<Point> _points;

当 LeftMouseButton 为 Down AND Up 时,添加一个空白点和起点:

oldPoint = currentPoint;
_points.Add(new Point(-1, -1));
_points.Add(oldPoint);

您的播放按钮事件处理程序将如下所示:

canvas.Children.Clear();

// Use the BackgroundWorker to draw the lines
BackgroundWorker worker = new BackgroundWorker();
worker.WorkerReportsProgress = true;
worker.DoWork += new DoWorkEventHandler(worker_DoWork);
worker.RunWorkerAsync();

worker_DoWork 遍历 _points 并将它们发送到我们的调度程序:

void worker_DoWork(object sender, DoWorkEventArgs e)
{
        for (int ix = 0; ix < _points.Count - 1; ix++)
        {
            Point start = _points[ix];
            Point end = _points[ix + 1];

            if (start.X == -1 || end.X == -1)
                continue;

            Thread.Sleep(10);
            DoEvents(start, end);
        }
}

DoEvents 使用 将Dispatcher线坐标发送到委托方法

    private delegate void AddLineDelegate(Point p1, Point p2);

    private void DoEvents(Point p1, Point p2)
    {
        this.Dispatcher.BeginInvoke(new AddLineDelegate(AddLine), new object[] { p1, p2 });
    }

    private void AddLine(Point p1, Point p2)
    {
        Line line = new Line() { X1 = p1.X, Y1 = p1.Y, X2 = p2.X, Y2 = p2.Y };
        line.Stroke = new SolidColorBrush(Colors.Black);
        line.StrokeThickness = 4;
        this.canvas.Children.Add(line);
    }
于 2011-08-16T23:15:28.057 回答