ゲームの場合は、ほとんどのフォームを削除して必要最低限の要素で作業し、可能であればビットマップを処理して、メイン フォームのペイント メソッドまたはその中にあるコントロール (おそらくパネル) をオーバーライドしてレンダリングします。これにより、パフォーマンスが向上します。
主な問題は、コンパクトなフレームワークが多くの UI の楽しみのために実際に設計されていないことです。完全なフレームワークのように無料でダブルバッファリングを取得できません。適切な透過性は、WinForm コントロールで行うには難しいことです。 UI スレッドが少し長すぎると、深刻なレンダリングの不具合が発生します。バックグラウンドスレッドでやりすぎると、それらを取得することさえあります! :O
Application.DoEvents を明示的に呼び出しても最適なパフォーマンスを得ることはできません。私の経験則では、トラブルシューティングを行ったり、UI で小さなハックを作成したりする場合にのみ使用します。
ゲームをバックグラウンド スレッドに固定してから、コントロールで .Invoke を呼び出してメイン UI スレッドにマーシャリングしてディスプレイを更新し、ユーザー入力を処理しながら応答するための十分な時間を UI に残すことをお勧めします。ユーザー入力は、通常の winform コントロールを避けるもう 1 つの理由です。モバイル デバイスには一般に多くのキーがないため、それらを再マップできると非常に便利です。
また、新しいフォームを表示すると微妙な一時停止が発生する可能性があるため、別のフォームを使用することも避けます。通常、ビジネス ソフトウェアを作成するときにこの問題を回避するために、コントロールをメイン フォームに交換します。
結局のところ、さまざまな手法を試して、何が最適かを確認することはおそらく価値があります。また、私は基本的に業務用ソフトウェアしか扱っていないので、CF でゲームを開発している人々からヒントを得ることができるかどうかを確認してください。
チッ!