トップページ > 記事閲覧
DrawStringToHandleで文字が表示されないです
名前:カカロット 日時: 2017/12/30 19:15

こんばんは。DXLibでゲーム開発をしてお世話になっております。 文字の表示で困っていることがあるので質問します。 int ChangePadNumber = 1; DrawFormatString(320, 100, GetColor(255, 255, 255), "ショット %d", ChangePadNumber );では文字が表示されるのですが、 int Shot = CreateFontToHandle(NULL, 40, 3); DrawStringToHandle(320, 100, "ショット %d", ChangePadNumber, GetColor(255, 255, 255), Shot); こちらでは文字が表示されないです。 全てのフォントのサイズを大きく表示したくないのでDrawStringToHandle関数を使って表示したいのですが表示されないです。 どこか記述が間違っていますでしょうか。 お時間のあるときに返信よろしくお願いします。
メンテ

Page: 1 |

Re: DrawStringToHandleで文字が表示されないです ( No.1 )
名前:管理人 日時:2017/12/30 23:34

> DrawStringToHandle(320, 100, "ショット %d", ChangePadNumber, GetColor(255, 255, 255), Shot); %d のような書式指定を行い、且つフォントハンドルを使用する場合は DrawStringTohandle ではなく DrawFormatStringToHandle を使用します // フォントハンドルを使用して書式指定文字列を描画する int DrawFormatStringToHandle( int x, int y, int Color, int FontHandle, char *FormatString, ... ) ; DrawFormatStringToHandle と DrawStringToHandle では色やフォントハンドルの引数の順番が異なりますので注意してください カカロットさんが記述された処理を行う場合は以下のようになります DrawFormatStringToHandle(320, 100, GetColor(255, 255, 255), Shot, "ショット %d", ChangePadNumber); あと、ご存知かもしれませんがフォントハンドルは作成に時間がかかり、且つ作成できる数も限られていますので 事前に必要なフォントハンドルを作成しておいて、ゲームループ中ではなるべく CreateFontToHandle を使用しないようにしてください m(_ _)m < 良くない例 ( 毎ループフォントハンドルを作成している > // メインループ while( ProcessMessage() == 0 ) { ClearDrawScreen() ; int FontHandle = CreateFontToHandle(NULL, 16, 3 ); DrawFormatStringToHandle( 100, 100, GetColor( 255,255,255 ), FontHandle, "Number:%d", 8 ) ; DeleteFontToHandle( FontHandle ) ; ScreenFlip() ; } < 良い例 ( フォントハンドルは初期化のときなどに作成しておく > int FontHandle = CreateFontToHandle(NULL, 16, 3 ); // メインループ while( ProcessMessage() == 0 ) { ClearDrawScreen() ; DrawFormatStringToHandle( 100, 100, GetColor( 255,255,255 ), FontHandle, "Number:%d", 8 ) ; ScreenFlip() ; } DeleteFontToHandle( FontHandle ) ;
メンテ
Re: DrawStringToHandleで文字が表示されないです ( No.2 )
名前:カカロット(解決) 日時:2017/12/31 01:58

ありがとうございます。 おかげで表示できました。 フォントハンドルは初期化で宣言するようにします。 またなにかありましたらよろしくお願いします。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存