我如何在Windows Phone上用C#在画布上绘制东西?
好的,让我再明确一点。
假设用户在画布上的386,43处轻触屏幕。(画布大小为768x480)
我希望我的应用程序能够响应并在画布上的386,43处放置一个红点。
我之前没有使用过Canvas的经验。
如果这太复杂而无法用一个问题回答(很可能是这样),请给我提供其他有关Canvas和绘图文章的网站链接。
我如何在Windows Phone上用C#在画布上绘制东西?
好的,让我再明确一点。
假设用户在画布上的386,43处轻触屏幕。(画布大小为768x480)
我希望我的应用程序能够响应并在画布上的386,43处放置一个红点。
我之前没有使用过Canvas的经验。
如果这太复杂而无法用一个问题回答(很可能是这样),请给我提供其他有关Canvas和绘图文章的网站链接。
有多种方法可以实现这一点。根据红点的性质,您可以将其制作成一个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);
}
MouseDown
事件附加到上面的el
对象。在事件处理程序中,将sender
转换为Ellipse
,然后你就会有被点击的实例。希望这就是你想要的? - keyboardP我认为你需要以不同的方式解决这个问题(故意不包含代码)。
在Windows应用程序(包括Phone)中,表单和控件可能因多种原因随时刷新。如果你响应触摸操作在画布上绘制,你会得到一个更新后的画布,直到下一次刷新。如果发生了刷新,画布会重新绘制自己,你会得到一个空白的画布。
我不知道你的最终目标是什么,但你可能想要跟踪用户所做的事情,并将该状态存储在某个地方,并在画布重新绘制时在画布上显示它。这可以通过存储所有操作并在画布上“重放”它们来完成,或者仅将画布的视图作为位图存储,并在刷新时重新加载画布。但是,在后一种情况下,我认为使用画布不是正确的解决方案。