在canvas上绘制东西

我如何在C#for Windows Phone的Canvas上绘制一些东西?

好的,让我更清楚一点。

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

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

我以前没有使用Canvas的经验。

如果这个问题太复杂而无法在一个问题中解答(可能是这个问题), 通过Canvas和Drawing文章给我链接到其他网站。

有很多方法可以做到这一点。 根据红点的性质,您可以将其设置为UserControl。 对于基本圆,您可以简单地处理canvas’ 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); } 

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

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

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