在画布上绘制东西

时间:2011-05-15 14:10:27

标签: c# visual-studio-2010 windows-phone-7 canvas drawing

我如何在C#for Windows Phone的Canvas上绘制内容?

好的,让我更清楚一点。

假设用户在画布上用386,43点击他的手指。 (画布是768乘480)

我希望我的应用程序能够通过在画布上放置红点386,43来做出响应。

我对Canvas有没有之前的经验。

如果这太复杂了,无法在一个问题(可能是)中回答,给我链接到其他网站的画布和绘图制品

2 个答案:

答案 0 :(得分:8)

有各种方法可以做到这一点。根据红点的性质,您可以将其设置为UserControl。对于基本圈子,您只需处理画布'ManipulationStarted事件。

private void myCanvas_ManipulationStarted(object sender, ManipulationStartedEventArgs e)
{

            Ellipse el = new Ellipse();
            el.Width = 10;
            el.Height = 10;
            el.Fill = new SolidColorBrush(Colors.Red);
            Canvas.SetLeft(el, e.ManipulationOrigin.X);
            Canvas.SetTop(el, e.ManipulationOrigin.Y);
            myCanvas.Children.Add(el);
}

答案 1 :(得分:4)

我认为你需要以不同的方式解决问题。 (因为这个原因,我没有故意包含代码。)

Windows应用程序(包括Phone)中的表单和控件可以在任何时候出于多种原因进行刷新。如果您在画布上绘制以响应触摸操作,则在下次刷新之前会有一个更新的画布。如果刷新发生,画布重新绘制自己,则最终会得到一个空白画布。

我不知道你的最终目标是什么,但你可能想要跟踪用户做了什么并将该状态存储在某处并在画布的重绘上显示在画布上。这可以通过存储所有操作并在画布上“重放”它们来完成,或者只是将画布视图存储为位图,并在刷新时使用该位图重新加载画布。但是,在后一种情况下,我认为使用画布不是正确的解决方案。