ループなどで一つ一つサイズやフォントを変えたい時に
while(ProcessMessage()==0&&CheckHitKey(KEY_INPUT_ESCAPE)==0){//ループ
RefreshTime = GetNowCount();//今の時間を取得
ClsDrawScreen();//画面消去
//フォントサイズ設定
SetFontSize(50);
// 描画する文字列の文字セットを変更します
ChangeFont( "MS 明朝" ) ;
//カウンターの値表示
DrawFormatString(0,0,GetColor(255,255,255),"%d",counter);
//フォントサイズ設定
SetFontSize(10);
// 描画する文字列の文字セットを変更します
ChangeFont( "MS Pゴシック" ) ;
//カウンターの値表示
DrawFormatString(50,0,GetColor(255,255,255),"%d",counter);
ScreenFlip();//画面入れ替え
counter++;//ループ回数カウント
}
このように(この文は説明のために適当に書きました、すいませんm(_ _)m)
DrawFormatStringの前に毎回SetFontSizeを入れて
実行させると、重くなってる気がするのですが
何かいい対処法ありませんか?
文字のサイズ変更等について
Re:文字のサイズ変更等について
SetFontSize 描画する文字列のサイズをセットする
SetFontThickness 描画する文字列の文字の太さをセットする
ChangeFont 描画するフォントを変更する
ChangeFontType 文字列描画に使用するフォントのタイプを変更する
などのフォント変更系の関数は処理が重いので、ループの中で何度もよんでやるのは避けたほうがいいようです。
ですので
http://homepage2.nifty.com/natupaji/DxL ... tml#R17N10
こちらの関数で、「フォントデータ」というものを作っておいて、そのフォントデータを使って描画する方法がいいでしょう。
DXライブラリ製作者様もそれを勧めていらっしゃいます。
このデータで書きたいときはDrawString関数ではなく、
上記リンク先でも説明されている通り、
DrawStringToHandle 指定のフォントデータで文字列を描画する
DrawFormatStringToHandle 指定のフォントデータで書式付き文字列を描画する
の関数を使ってください。
SetFontThickness 描画する文字列の文字の太さをセットする
ChangeFont 描画するフォントを変更する
ChangeFontType 文字列描画に使用するフォントのタイプを変更する
などのフォント変更系の関数は処理が重いので、ループの中で何度もよんでやるのは避けたほうがいいようです。
ですので
http://homepage2.nifty.com/natupaji/DxL ... tml#R17N10
こちらの関数で、「フォントデータ」というものを作っておいて、そのフォントデータを使って描画する方法がいいでしょう。
DXライブラリ製作者様もそれを勧めていらっしゃいます。
このデータで書きたいときはDrawString関数ではなく、
上記リンク先でも説明されている通り、
DrawStringToHandle 指定のフォントデータで文字列を描画する
DrawFormatStringToHandle 指定のフォントデータで書式付き文字列を描画する
の関数を使ってください。
Re:文字のサイズ変更等について
CheckHitKeyはもしループ内に2回以上使うのでしたら、こちらの関数を使うことをお勧めします。
http://homepage2.nifty.com/natupaji/DxL ... html#R5N28
短いプログラムならwhileの条件式内に書いておけば便利です。
http://homepage2.nifty.com/natupaji/DxL ... html#R5N28
短いプログラムならwhileの条件式内に書いておけば便利です。