Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在画布上画东西_C#_Visual Studio 2010_Windows Phone 7_Canvas_Drawing - Fatal编程技术网

C# 在画布上画东西

C# 在画布上画东西,c#,visual-studio-2010,windows-phone-7,canvas,drawing,C#,Visual Studio 2010,Windows Phone 7,Canvas,Drawing,我如何用C#for Windows Phone在画布上绘制一些东西? 好吧,让我说清楚一点。 假设用户用手指在画布上按386,43。(画布是768乘480) 我希望我的申请能够通过在画布上386,43处放置一个红点来响应。 我以前没有任何帆布方面的经验。 如果这太复杂,无法用一个问题来回答(很可能是这样),请给我提供指向其他网站的链接,其中包含画布和绘画文章。有多种方法可以做到这一点。根据红点的性质,可以将其设置为用户控件。对于基本圆,您可以简单地处理画布上的“manufactionstarte

我如何用C#for Windows Phone在画布上绘制一些东西? 好吧,让我说清楚一点。 假设用户用手指在画布上按386,43。(画布是768乘480) 我希望我的申请能够通过在画布上386,43处放置一个红点来响应。 我以前没有任何帆布方面的经验。
如果这太复杂,无法用一个问题来回答(很可能是这样),请给我提供指向其他网站的链接,其中包含画布和绘画文章。

有多种方法可以做到这一点。根据红点的性质,可以将其设置为用户控件。对于基本圆,您可以简单地处理画布上的“
manufactionstarted
事件

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应用程序(包括手机)中的窗体和控件可以随时出于多种原因进行刷新。如果您在画布上绘制以响应触摸操作,则在下次刷新之前,您将拥有一个更新的画布。如果刷新发生在画布重新绘制自身时,则最终会得到一个空白画布


我不知道您的最终目标是什么,但您可能希望跟踪用户所做的事情,并将该状态存储在某个位置,然后在画布的重新绘制上显示在画布中。这可以通过存储所有动作并在画布上“重放”它们来完成,或者简单地将画布的视图存储为位图,并在刷新时用该位图重新加载画布。但是,在后一种情况下,我认为使用画布不是正确的解决方案。

我想开始对每个问题进行否决,这些问题包括明确要求在答案中包含代码。如果我能在不显示代码的情况下帮助你,你不需要我的帮助吗?我同意,这有点粗鲁。我愿意在这里表示怀疑,因为这是一段非常简单的代码。如果你对C#一无所知,就不应该用它来编码。严厉但真实。去学C#,然后你就不需要只问代码的答案了。@Martinho:好吧,从Java的经验来看,跳进去写代码确实能帮助我学习。另外,我的意思是我没有使用C#Canvas的经验。我确实有一些C#方面的经验。不管怎样,很抱歉我要求编写代码——正如你所看到的,我已经把它编辑掉了。说清楚点,只要有人帮忙,我都会没事的。{我刚刚再次注意到这个问题,因为它刚刚为我赢得了一个值得注意的问题徽章,我想把它清理干净。}如果Windows Phone以后支持屏幕截图,这可能是一个解决方案,但在我发布应用程序后,这个功能可能会出现。另外,我同意你的观点,也许使用画布不是正确的解决方案。嗨,Peter,你的意思是简单地在gui上使用一个图像控件,然后在每个用户上单击evet,用新的更改绘制一个新的位图图像吗?bmp图像绑定到图像控件的位置?嗨,如果我希望每个点都是可点击的,并且是一个用户控件,该怎么办?假设我有1000个点,用户点击一些点来应用一些功能them@FirstStep-嗨。可能值得创建一个新问题(或查看是否在其他地方得到了回答),但您可以将
MouseDown
事件附加到上面的
el
对象。在事件处理程序中,将
发送方
强制转换为
椭圆
,您将获得单击的实例。希望这就是你的意思?