画像の上に文字を表示させるやり方。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
狼肉

画像の上に文字を表示させるやり方。

#1

投稿記事 by 狼肉 » 10年前

ゲームのタイトル画面を作っているのですが、背景に画面いっぱいの画像を写してしまったら、文字なのが背景に隠れて表示できなくなってしまいます。背景の下に文字が言ってしまうのではなく、文字の下に背景が来るようにするためにはどうしたらよいですか?


ソース

#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 ; // ソフトの終了
}

Justy

Re:画像の上に文字を表示させるやり方。

#2

投稿記事 by Justy » 10年前

>背景の下に文字が言ってしまうのではなく、文字の下に背景が来るようにするためにはどうしたらよいですか?

 DXライブラリの場合、画用紙に絵の具で絵を描いたときと同じく、原則として後から
書いたものが上に表示されます。
 
 
 今のコードですと、文字を書いてから(DrawString)背景を表示(LoadGraphScreen)しようと
していますよね?
 これでは文字を書いた後、それを塗りつぶして背景が表示されてしまいます。

 なので、背景を表示してから文字を表示するようにすれば、文字を上にすることが出来ます。
 試してみて下さい。


# メインループ内の毎フレーム通過するところに LoadGraphScreen()を置くのは
処理効率の面からあまりお薦めできません。
 これでは毎回ファイルをロードすることになるので、結構処理が重たくなるはずです。

 LoadGraph()/DrawGraph()などに変えて、ロードを最小限に抑えた方がいいかと思います。

kazuoni

Re:画像の上に文字を表示させるやり方。

#3

投稿記事 by kazuoni » 10年前

コードを載せる際には、規約にも書いてありますが、<pre></pre>をつけるようにしてください。

表示する順番を変えてやるだけだと思います。今は文字→背景ですが、背景→文字が正しいです。

kazuoni

Re:画像の上に文字を表示させるやり方。

#4

投稿記事 by kazuoni » 10年前

すんません、かぶってました^^;失礼しましたミ

狼肉

Re:画像の上に文字を表示させるやり方。

#5

投稿記事 by 狼肉 » 10年前

Justyさん、kazuoniさんありがとうございました。
おかげで、きちんと表示する事が出来ました。DXライブラリにそんな仕様があったのは知りませんでした。それと、処理を軽くするための LoadGraph()とDrawGraph()もやりました。2重にありがとうございます。助かりました。

>kazuoniさん

<pre></pre>忘れてました!すいません。次回コードを書く事があれば、忘れずに書きます。

閉鎖

“C言語何でも質問掲示板” へ戻る