ゲームのタイトル画面を作っているのですが、背景に画面いっぱいの画像を写してしまったら、文字なのが背景に隠れて表示できなくなってしまいます。背景の下に文字が言ってしまうのではなく、文字の下に背景が来るようにするためにはどうしたらよいですか?
ソース
#include "DxLib.h"
int function_status=0,White;
char KeyBuf[ 256 ] ;
void A(){
DrawString( 160 , 340 , "PRESS ENTER KEY" , White );
if( KeyBuf[ KEY_INPUT_RETURN ] == 1 )
function_status=1;
}
void B(){
PlaySound( "onngaku/start.wav" , DX_PLAYTYPE_BACK ); // test.midのバックグラウンド演奏
function_status=2;
}
void C(){
DrawString( 160 , 340 , "PRESS ENTER KEY" , White );
}
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
ChangeWindowMode( TRUE ) ; //ウィンドウモードに変更
if( DxLib_Init() == -1 ) return -1; // DXライブラリ初期化処理 エラーが起きたら終了
White = GetColor( 255 , 255 , 255 ) ; //色の取得
SetDrawScreen( DX_SCREEN_BACK ) ; // 描画先を裏画面に設定
while( 1 ){
ClearDrawScreen(); // 裏画面のデータを全て削除
GetHitKeyStateAll( KeyBuf ) ; // すべてのキーの状態を得る
switch(function_status){
case 0:
A();
break;
case 1:
B(),C();
break;
case 2:
DxLib_End() ; // DXライブラリ使用の終了処理
return 0;
break;
}
SetFontSize( 85 ) ; //サイズを20に変更
SetFontThickness( 1 ) ; //太さを1に変更
ChangeFont( "HGS創英角ポップ体" ) ; //HGS創英角ポップ体に変更
ChangeFontType( DX_FONTTYPE_ANTIALIASING_EDGE );//アンチエイリアス&エッジ付きフォントに変更
DrawString(25,120,"ゲームタイトル!! ",White);
SetFontSize( 30 ) ; //サイズを20に変更
SetFontThickness( 1 ) ; //太さを1に変更
ChangeFont( "HGS創英角ポップ体" ) ; //HGS創英角ポップ体に変更
ChangeFontType( DX_FONTTYPE_ANTIALIASING_EDGE );//アンチエイリアス&エッジ付きフォントに変更
LoadGraphScreen( 0 ,0 , "gazou/A.jpg" ,FALSE) ;
if( ProcessMessage() == -1 ) break ; //エラーが起きたら終了
ScreenFlip() ; // 裏画面データを表画面へ反映
}
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
画像の上に文字を表示させるやり方。
Re:画像の上に文字を表示させるやり方。
>背景の下に文字が言ってしまうのではなく、文字の下に背景が来るようにするためにはどうしたらよいですか?
DXライブラリの場合、画用紙に絵の具で絵を描いたときと同じく、原則として後から
書いたものが上に表示されます。
今のコードですと、文字を書いてから(DrawString)背景を表示(LoadGraphScreen)しようと
していますよね?
これでは文字を書いた後、それを塗りつぶして背景が表示されてしまいます。
なので、背景を表示してから文字を表示するようにすれば、文字を上にすることが出来ます。
試してみて下さい。
# メインループ内の毎フレーム通過するところに LoadGraphScreen()を置くのは
処理効率の面からあまりお薦めできません。
これでは毎回ファイルをロードすることになるので、結構処理が重たくなるはずです。
LoadGraph()/DrawGraph()などに変えて、ロードを最小限に抑えた方がいいかと思います。
DXライブラリの場合、画用紙に絵の具で絵を描いたときと同じく、原則として後から
書いたものが上に表示されます。
今のコードですと、文字を書いてから(DrawString)背景を表示(LoadGraphScreen)しようと
していますよね?
これでは文字を書いた後、それを塗りつぶして背景が表示されてしまいます。
なので、背景を表示してから文字を表示するようにすれば、文字を上にすることが出来ます。
試してみて下さい。
# メインループ内の毎フレーム通過するところに LoadGraphScreen()を置くのは
処理効率の面からあまりお薦めできません。
これでは毎回ファイルをロードすることになるので、結構処理が重たくなるはずです。
LoadGraph()/DrawGraph()などに変えて、ロードを最小限に抑えた方がいいかと思います。
Re:画像の上に文字を表示させるやり方。
コードを載せる際には、規約にも書いてありますが、<pre></pre>をつけるようにしてください。
表示する順番を変えてやるだけだと思います。今は文字→背景ですが、背景→文字が正しいです。
表示する順番を変えてやるだけだと思います。今は文字→背景ですが、背景→文字が正しいです。
Re:画像の上に文字を表示させるやり方。
Justyさん、kazuoniさんありがとうございました。
おかげで、きちんと表示する事が出来ました。DXライブラリにそんな仕様があったのは知りませんでした。それと、処理を軽くするための LoadGraph()とDrawGraph()もやりました。2重にありがとうございます。助かりました。
>kazuoniさん
<pre></pre>忘れてました!すいません。次回コードを書く事があれば、忘れずに書きます。
おかげで、きちんと表示する事が出来ました。DXライブラリにそんな仕様があったのは知りませんでした。それと、処理を軽くするための LoadGraph()とDrawGraph()もやりました。2重にありがとうございます。助かりました。
>kazuoniさん
<pre></pre>忘れてました!すいません。次回コードを書く事があれば、忘れずに書きます。