2011-10-04 108 views
0

我在wp7 silverlight应用程序中使用画布。 我面临两个问题。在windows phone 7画布中添加儿童超过儿童

  1. 于是就Canvas_MouseLeftButtonDown事件捕获单点,然后在MouseMove事件我正在拍摄另一点,然后画一条线,并加入这个孩子画布。一切都很顺利,只是在鼠标移动事件中,如果我将手指快速移动一点,结果是我得到的是直线而不是曲线,两个点之间缺少一些点。 对于抓点,我使用e.GetPosition(其中e是MouseButtonEventArgs和MouseEventArgs类型)。是否有其他方式可以通过它像使用Touch类一样抓取点。

  2. 如果我已经绘制了很多行(将许多孩子添加到画布上),那么在之前的行中添加更多具有不同颜色的行会很慢,并且点会再次丢失,从而导致直线。我认为它的发生是因为在已经绘制的区域捕获了MouseMove事件中的点变得缓慢并且中间点丢失。

所以,请给我建议任何解决方案或方法来处理这个问题的情况。基本上,我必须实现的是当手指在画布上移动时,将儿童添加到具有不同颜色和不同笔触大小的儿童。

我附上我目前的逻辑,所以请告诉我我落后的地方。

在此先感谢。

代码:

void myCanvas_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) 
    { 
     currentPoint = e.GetPosition(myCanvas); 
     oldPoint = currentPoint; 
    } 

    void myCanvas_MouseMove(object sender, MouseEventArgs e) 
    { 
      currentPoint = e.GetPosition(myCanvas); 
      Line line = new Line() { X1 = currentPoint.X, Y1 = currentPoint.Y, X2 = oldPoint.X, Y2 = oldPoint.Y }; 
      line.Stroke = new SolidColorBrush(myColor); 
      line.StrokeThickness = 10; 
      line.StrokeStartLineCap = PenLineCap.Round; 
      line.StrokeEndLineCap = PenLineCap.Round; 
      this.myCanvas.Children.Add(line); 
      oldPoint = currentPoint; 
     } 
    } 

回答

0

我不是很久以前工作的东西非常相似,当我有问题,我发现这一点。

Derik Whittaker

我希望这有助于! :)

+0

首先感谢Derik为你的解决方案。我在我的设备上进行了测试,捕获点和绘图的性能得到了极大的提升。我现在可以画点。但仍然存在的问题是,当我将手指快速移动到画布上时,小直线仍然存在。现在出现的其他问题是绘制字母,如V,W,M等(具有边缘)尖锐的边缘正在绘制,就像我们制作之字形线条时所绘制的尖锐边缘...可以通过线条的某些属性。 – pan4321

+0

不是我所知道的,但肯定会继续对此进行研究。 MSDN或WP7 Dev将是一个很好的开始。花费更长时间才能得到答案,但他们会非常有帮助。 – Keeano

+0

也会转到MSDN.com并在画笔上查找“类参考”并查看它可以访问的内容。 – Keeano