• ベストアンサー

画像を重ねて動かすと重くなります。

簡単なシューティングのようなゲームを作成しているのですが 背景画像の上で機体の画像を動かすと、画像の動作が重くなります。 背景をなしに、あるいは色だけにするとスムーズに動作するのですが やはり背景画像がないとゲームとして寂しいものがあります。 何とかならないでしょうか。 ちなみに自機は下記のような記述で動かしています。 x(y) = Pic.Location.X(Y) + 1 Pic.Location = New Point(x, y) 宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

画像処理、ゲーム系とかはあまり詳しくないのですが、 回答がついてないので少し。 基本的に、Windowsの標準的な(?)描画機能を使うと、処理は重いです。 他の手段としては、DirectX系を除けば、環境などにもよりますが(環境は 書いてくださいね…)以下のようなものがあります。 ・VB.NET系なら、PicreBoxに割り当てたメモリ上のBitmapを  Graphicsクラスを使用して直接操作する ・WindowsAPI BitBltを使用して直接Bitmapを描画 BitBltは、VB.NET系でGraphicsクラスを使用した描画(DrawImageとか)より 高速「らしい」です。 .NET系だとBitmapの定義自体は標準で持っているので、BitBltを使うにしても 比較的 楽なようですが(以前、英語サイトで.NETでBitBltを使うサンプルが 書かれてたのを見ましたが…どこか忘れた(汗))、VB6あたりでやろうとすると 結構面倒です。ここでは書ききれないぐらいの手間が掛かるかと。 ただ、方法さえ知っていれば、Graphicsクラスでの重ね合わせでは透過色とかを 設定できますし、BitBltでは論理演算しながらの合成が可能なので、 うまくすれば綺麗には描画できると思います。 あと、Graphicsクラスを使うにしても、BitBltを使うにしても、描画範囲は 出来るだけ小さくなるようにしないと、結局重いですよ。 BitBltを使用してもスピードが足りないようなら… DirectX関連の使用を 検討するとか、C++の勉強をしてみるとか、踏み込んだ内容が必要になるかと思います。 (私はDirectXもC++も「?」ですが…)

sa1212
質問者

お礼

申し訳ありません、こちらの環境を書くのを忘れていました。 .netの方なので、前者のやり方で試してみたいと思います。 有難う御座いました。

関連するQ&A