На форме (WPF) есть canvas и кнопка. При нажатии на кнопку запускается таймер, который каждые 100мс рисует большое количество эллипсов (около 5 тысяч). Вот пример как я их рисую:
public partial class MainWindow : Window
{
DispatcherTimer Timer;
public MainWindow()
{
InitializeComponent();
Timer = new DispatcherTimer();
Timer.Tick += new EventHandler(Timer_Tick);
Timer.Interval = new TimeSpan(0, 0, 0, 0, 100);
}
private void Timer_Tick(object sender, EventArgs e)
{
canvas.Children.Clear();
Random rnd = new Random(DateTime.Now.Millisecond);
for (int j = 0; j < 5000; j++)
{
Ellipse ell = new Ellipse();
ell.Height = 6;
ell.Width = 6;
ell.Fill = Brushes.Black;
ell.Margin = new Thickness(
rnd.Next(0, 300),
rnd.Next(0, 300),
0,
0);
canvas.Children.Add(ell);
}
}
private void button_Click(object sender, RoutedEventArgs e)
{
Timer.Start();
}
}
Проблема в том, что при таком большом количестве эллипсов идет сильная нагрузка на ЦП. Как можно сделать правильней и уменьшить нагрузку на ЦП?