我在XAML中定义了这个Canvas:
<Canvas x:Name="MyCanvas" Background="White" TouchMove="MyCanvas_TouchMove"/>
这是我第一次尝试在TouchMove事件中模拟喷雾效果:
for (int i = 0; i < 10; i++)
{
double r = random.NextDouble() * radius;
double theta = random.NextDouble() * (Math.PI * 2);
double x = e.GetTouchPoint(MyCanvas).Position.X + Math.Cos(theta) * r;
double y = e.GetTouchPoint(MyCanvas).Position.Y + Math.Sin(theta) * r;
Ellipse ellipse = new Ellipse();
ellipse.Height = 2;
ellipse.Width = 2;
ellipse.SetValue(Canvas.LeftProperty, x);
ellipse.SetValue(Canvas.TopProperty, y);
ellipse.Fill = (blackBrush);
MyCanvas.Children.Add(ellipse);
}
}
它在开始时效果很好,但是“喷涂”越多,渲染速度就越快。
我知道问题很可能是因为我在画布上添加了很多元素,而且因为经常调用Children.Add方法。
我该如何改善这个?