MFCでBMPから抜き出したキャラクター画像をアニメーションさせるにはどのようにしたらいいのでしょうか?


今のところ、OnTimerしか見当がついていませんが、よくわかっていません。他にも方法があったら教えていただきたいです。

よろしくお願いします。

環境.NET2003 VC++ Windows2000

回答の条件
  • URL必須
  • 1人3回まで
  • 登録:2006/06/08 00:39:28
  • 終了:2006/06/15 00:40:04

回答(1件)

id:kazu1107 No.1

kazu1107回答回数199ベストアンサー獲得回数142006/06/08 03:56:39

ポイント60pt

タイマーについては以下ページにて使い方が説明されています。

http://www.hi-ho.ne.jp/hawk/mfc0401.html#timer


基本的にはウィンドウプロシージャ内でタイマーが投げるメッセージを受けとり、パラパラアニメのように描画すればアニメーションに見えます。


ただ、基本的に再描画はWM_PAINTが呼ばれたとき行うべきです。

これを実現する方法としては描画用のバッファ内にビットマップを書き込み、OnPaint()内で描画用バッファを実際にウィンドウに書き出すという方法か、表示領域を決める処理をOnPaint()内で行うのが一般的。

ゲームではちらつきを押さえるため前者が一般的ですが、ビットマップ1枚ならちらつきは出ないはずなので、座標計算のみタイマ内で行い、表示の時にその座標を使うというのがベストかと(WM_PAINTは他からも呼ばれる可能性があるから)


どちらにしてもOnPaint()内で描画を行うならタイマに制御が来たとき、座標計算やバックバッファへの書き込みをしてから、CWnd::InvalidateRect()を呼んでWM_PAINTが呼ばれるタイミングを作る必要があります。


他にも方法があったら・・・とのことですので一応書いておくと、ゲームだとメッセージループで処理してる事が多いです。

これはスピードを取るためで、この方法を使うアプリケーションはCPU使用率がかなり高めになります。

あまり高速な処理を求めないなら出来るだけタイマによる処理を選ぶべきです。

  • id:champclair
    champclair 2006/06/15 11:51:49
    お礼が遅くなってしまって申し訳ありません。
    大変参考になりました。
    ありがとうございました。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません