- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:DirectXなしでのC#でSTG)
DirectXなしでC#でSTGを作る方法
このQ&Aのポイント
- DirectXやXNAを使わずにC#でSTGを作る方法を探しています。
- 画像の表示にはUIElementが使えないため、代わりの方法を知りたいです。
- 重さやパフォーマンスに心配がありますが、PictureBoxを使用しても問題はないでしょうか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
PictureBoxでは、動作速度もそうですが透過画像が使えない点がネックになると思います。PictureBoxが移動するたびにコンテナのPaintが走るので画面のちらつきもひどくなるでしょうね…。 ちらつきについてはFormのPaintイベントで直描きしてもかなり目立ちます。ちらつきを抑えるには、バックバッファを用意し、OnPaintBackgroundをオーバーライドして全面にバックバッファを描画する手法が有効です。ゲーム画面の描画はバックバッファに対して行います。 要はDXにおけるマルチバッファリング(の簡易版)を自力で実装するということです。 1フレームの大まかな流れとしては次のようになります。 1. 自機・敵機・弾丸等の座標計算 2. バックバッファへ描画 3. Formに対し、Invalidateを実行 4. OnPaintBackgroundイベントでスクリーンを更新 あとはこれをひたすらループさせれば、FPSに関係なくそれなりに高速動作するかと。 また、参考URLのようなゲーム用のライブラリを公開しているサイトもあります。
お礼
やはりPictureBoxを使うのは無理があるようですね。 ということはやっぱり、描画する弾をその位置に描画するんですよね。 フォームにコントロールを置くのではなく、背景として全部描画が済んだやつを表示する。 SetStyleで設定してダブルバッファにしたりもしなくてはならないんでしょうかね。 参考URLは見たことはあったのですが、すっかりスルーしてました。 ですがそんなに本格的なものをつくるつもりではないので、今回は使わないことにします。 ありがとうございました。 どうすればいいのか迷っていた部分が、少し分かった気がします。 がんばってやってみます。