Я делаю игру с частицами (пока что только с водой), и метод Draw () внутри элемента довольно медленный, с несколькими, идущими одновременно. Я предполагаю, что это потому, что он вычисляет так много раз в секунду, но я все еще весьма недоволен этим, учитывая, что это просто базовые 2D фигуры. Как я могу сделать это более эффективным?
Вот мой код:
(цикл) (выполняется каждые 50 миллисекунд) (Обратите внимание, я просто включил формы для таймера, я использую WPF.)
void TimeKeeper_Tick(object sender, EventArgs e)
{
foreach (Element ele in Elements)
{
ele.Draw();
}
}
И метод рисования. Pos - это Vector2 (класс, который я сделал, чтобы сэкономить время):
public void Draw()
{
Pos.Add(3, 10);
if (Pos.Y > (int)canvas.ActualHeight)
{
Pos.Set(Pos.X, (int)shape.RenderSize.Width);
}
if (Pos.X+shape.RenderSize.Width > (int)canvas.ActualWidth)
{
Pos.Set(0, Pos.Y+(int)shape.RenderSize.Height);
}
shape.SetValue(Canvas.LeftProperty, (double)Pos.X);
shape.SetValue(Canvas.TopProperty, (double)Pos.Y);
if (canvas.Children.IndexOf(shape) != null)
{
canvas.Children.Remove(shape);
}
canvas.Children.Add(shape);
}