[HMC]年間5250円で独自ドメイン付属、ウィルスチェックありのレンタルサーバ!
Top
>
DirectXゲーム作成講座 Top
Last update : 2000/09/29
演出&エフェクト 第6回
画像を徐々に表示する
▼サンプルコードのダウンロード
▼早速サンプルコードの解説
サンプルコードのダウンロード
では、まず
サンプルコード
をダウンロードし、解凍して下さい。 私はVisual C++6.0でコンパイルしているので、をお持ちの方は Visual C++でプロジェクトファイルを開いて下さい(「effec_06.dsw」をダブルクリックすれば開けます)。 圧縮ファイルに含まれる「effec_06.exe」をダブルクリックし、実行してみて下さい(何かキーを押すと終了します)。 どうでしょう?画面が切り替わり、Takabo Soft Networkのロゴが下から徐々に表示されると思います。
というわけで、今回は徐々に画像を表示する方法を説明していきます。
早速サンプルコードの解説
今回の主なコードはこれ。
//----------[ メイン関数 ]---------------------------------------------------------------------- int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdParam, int nCmdShow){ 略 //DirectDraw開始 StartDirectDraw(hw); //パレット設定 LoadPalette("takabo.bmp"); //ビットマップを作業用サーフェイスへ読み込む LoadBitmap(lpWork,"takabo.bmp",0,0,612,145); int count=1,i; DWORD tim; while(1){ tim=timeGetTime(); //疑似タイマー処理 //徐々に下から表示 if(count<=145){ ClearScreen(lpBack); //バックバッファ全消去 //既に表示済みのものを表示 Blt(lpBack,15,168+145-count,612,count,lpWork,0,145-count,FALSE); //一番上に表示しているものを縦に連続させて表示 for(i=0;i<168+145-count;i++) Blt(lpBack,15,i,612,1,lpWork,0,145-count,FALSE); Flip(); //画面更新 } //普通に表示 else { ClearScreen(lpBack); Blt(lpBack,15,168,612,145,lpWork,0,0,FALSE); Flip(); } count++; if(count>300) count=1; do{ //メッセージループ while(PeekMessage(&msg,NULL,0,0,PM_NOREMOVE)){ if(!GetMessage(&msg,NULL,0,0)) Quit(); TranslateMessage(&msg); DispatchMessage(&msg); } }while(timeGetTime()<tim+33); //1000/30=33.333(30FPS) } return(FALSE); }
今回のプログラムは簡単なので、すぐに解ると思います(^^;
下から順番に表示しつつ、新しく表示される部分は上から降ってくるかのように表示する、 というよくあるやつですね?
まぁ、簡単とは言っても解らない人もいると思うので一応紹介はしておきましたが、これ以上 言うことも無いです(爆