Привет, я хочу написать игру с основной формой игры и множеством других нормальных форм. Как лучше всего управлять циклом обновления-рисования в таком случае?
Следует ли переопределить только цикл рисования игровой формы? или я должен делать события application.do () в основном методе?
Пожалуйста, помогите мне в этом. Я новичок в мире форм Windows





Если вы делаете игру, вам следует обратить внимание на DirectX, OpenGL или XNA.
это в основном игра на GDI + с множеством форм и формой с некоторой игровой логикой на ней, и это на .NET CF
Опять же, вам следует обратить внимание на технологии, о которых я упоминал, winforms вряд ли будет поддерживать то, что вы хотите, очень хорошо.
Ваш логический поток должен быть отделен от формы, поэтому вам не понадобится DoEvents (). Если вы используете GDI +, вам следует принудительно запустить Update () в цикле. Windows Forms не очень хорошо выполняет двойную буферизацию, поэтому в зависимости от того, насколько сложной будет ваша графика, у вас могут возникнуть проблемы с мерцанием.
Я предлагаю взглянуть на использование Управляемая библиотека DirectX. Этому многому нужно научиться, но он дает вам все необходимое.
Обновлено: Недавно я читал о WPF, который кажется намного лучшей платформой для простых и умеренно сложных игр, потому что он предоставляет API гораздо более высокого уровня, чем Библиотека, управляемая DirectX. Однако он, вероятно, имеет ограничения по производительности и гибкости для более сложных игр.
В теле вопроса не упоминается Compact Framework, только Winforms. Это в значительной степени принятый ответ для Winforms от Тома Миллера (Xna Game Studio и Managed DirectX от Microsoft):
@Rich B: игровой цикл не зависит от того, как выполняется рендеринг (DirectX, MDX, GDI +)
Я не нахожу ничего из того, что вы говорите в ОП. В его названии четко написано CF. И он спрашивает о рендеринге в «игровом цикле».
Ваш вопрос: «Как лучше всего управлять циклом обновления-рисования в игре с основной игровой формой с другими нормальными формами?» не ".NET CF Game Loop". Пожалуйста исправьте.