petter2012 Ответов: 1

Каков самый умный способ обновить окно для игры WPF?


Привет,

Я создаю игровой движок для WPF. Я пытаюсь отойти от DispatcherTimer к секундомеру, чтобы получить более постоянную скорость игры (так как DispatcherTimer пропускает повороты, если в игре слишком много объектов).

Я могу написать код для корректного обновления игры с помощью секундомера (то есть скорость и положение моих игровых объектов рассчитываются правильно), но когда я опущу DispatcherTimer, графический интерфейс никогда не будет перерисовываться.

Я знаю, что есть несколько способов принудительно перерисовать окно, но что было бы моим лучшим вариантом для 2D-игры в WPF? Я просто ищу что-то простое, что работает довольно эффективно без особых хлопот.

Это мой текущий код для размещения объектов на экране, много раз в секунду:

for (int i = 0; i < Bodies.NumberOfBodies(); 
{
    Body body = Bodies.Bodylist[i];
    var shape = body.GetShape();
    game.Children.Add(shape); //each movable body's shape is added again. 

    Canvas.SetLeft(shape, body.PosX - offsetX);
    Canvas.SetTop(shape, body.PosY - offsetY);
}


Спасибо!

Петтер

Что я уже пробовал:

Я читал на эту тему, но есть много решений, и я не знаю, что было бы наиболее подходящим.

1 Ответов

Рейтинг:
1

petter2012

Я нашел ответ, работая с моим коллегой. Проверьте здесь ответ:

Добавление обработчика событий (compositiontarget.rendering) в WPF[^]