在windows phone 7画布中添加儿童超过儿童
问题描述:
我在wp7 silverlight应用程序中使用画布。 我面临两个问题。在windows phone 7画布中添加儿童超过儿童
于是就Canvas_MouseLeftButtonDown事件捕获单点,然后在MouseMove事件我正在拍摄另一点,然后画一条线,并加入这个孩子画布。一切都很顺利,只是在鼠标移动事件中,如果我将手指快速移动一点,结果是我得到的是直线而不是曲线,两个点之间缺少一些点。 对于抓点,我使用e.GetPosition(其中e是MouseButtonEventArgs和MouseEventArgs类型)。是否有其他方式可以通过它像使用Touch类一样抓取点。
如果我已经绘制了很多行(将许多孩子添加到画布上),那么在之前的行中添加更多具有不同颜色的行会很慢,并且点会再次丢失,从而导致直线。我认为它的发生是因为在已经绘制的区域捕获了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;
}
}
首先感谢Derik为你的解决方案。我在我的设备上进行了测试,捕获点和绘图的性能得到了极大的提升。我现在可以画点。但仍然存在的问题是,当我将手指快速移动到画布上时,小直线仍然存在。现在出现的其他问题是绘制字母,如V,W,M等(具有边缘)尖锐的边缘正在绘制,就像我们制作之字形线条时所绘制的尖锐边缘...可以通过线条的某些属性。 – pan4321
不是我所知道的,但肯定会继续对此进行研究。 MSDN或WP7 Dev将是一个很好的开始。花费更长时间才能得到答案,但他们会非常有帮助。 – Keeano
也会转到MSDN.com并在画笔上查找“类参考”并查看它可以访问的内容。 – Keeano