画布上的喷涂效果

时间:2014-06-07 01:28:47

标签: wpf wpf-controls

我在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方法。

我该如何改善这个?

0 个答案:

没有答案