文字のサイズ変更等について

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

文字のサイズ変更等について

#1

投稿記事 by きつね » 18年前

ループなどで一つ一つサイズやフォントを変えたい時に

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:文字のサイズ変更等について

#2

投稿記事 by 管理人 » 18年前

SetFontSize  描画する文字列のサイズをセットする
SetFontThickness  描画する文字列の文字の太さをセットする
ChangeFont  描画するフォントを変更する
ChangeFontType  文字列描画に使用するフォントのタイプを変更する

などのフォント変更系の関数は処理が重いので、ループの中で何度もよんでやるのは避けたほうがいいようです。

ですので

http://homepage2.nifty.com/natupaji/DxL ... tml#R17N10

こちらの関数で、「フォントデータ」というものを作っておいて、そのフォントデータを使って描画する方法がいいでしょう。
DXライブラリ製作者様もそれを勧めていらっしゃいます。
このデータで書きたいときはDrawString関数ではなく、
上記リンク先でも説明されている通り、

DrawStringToHandle  指定のフォントデータで文字列を描画する
DrawFormatStringToHandle  指定のフォントデータで書式付き文字列を描画する

の関数を使ってください。

管理人

Re:文字のサイズ変更等について

#3

投稿記事 by 管理人 » 18年前

CheckHitKeyはもしループ内に2回以上使うのでしたら、こちらの関数を使うことをお勧めします。

http://homepage2.nifty.com/natupaji/DxL ... html#R5N28

短いプログラムならwhileの条件式内に書いておけば便利です。

きつね

Re:文字のサイズ変更等について

#4

投稿記事 by きつね » 18年前

情報ありがとうございます!
さっそくためしてみます!!

閉鎖

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