テキストにて

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

テキストにて

#1

投稿記事 by 夏天 » 18年前

DXライブラリのノベルのテキスト表示をするとき
文字数を多くするとウィンドウからはみ出てしまいます
右端までテキストが行ったら折り返す(メモ帳の書式の右端で折り返すにチェック入れた状態)ように表示させるにはどうしたらよいのでしょうか

管理人

Re:テキストにて

#2

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

ゲームプログラミングの館の「サウンドノベル風文字列表示法2」にまさにその方法を書こうとしていたところだったのですが、
まず、文字列を表示した時のモニタ上の長さを取得する関数があります。

こちらの関数です。
http://homepage2.nifty.com/natupaji/DxL ... html#R17N2

この関数を使って表示すべき範囲を超えたと判断したら
折り返しましょう。
もしフォントサイズが変わらないのでしたら、何文字で何ドット分の領域をとるかは
事前にわかるので、何文字になったら折り返すとプログラムを書いてもいいかもしれません。

また、具体的には、表示させるべき文字列を2つにわけて、DrawFormatString関数を2つ使って表示させると簡単です。

表示させたい時にst1,st2にそれぞれ文字列を1文字ずつ入れてやることで、
2行に渡って表示できます。
char st[/url][256]={
	{"今日はDXライブラリの"},
	{"勉強をします。"},
	{"その中でもサウンドノベル風文字列表示の仕方を"},
	{"勉強をしています。"}
};
char st1[256],st2[256];

・ウィンドウに収まるだけst1に文字を1文字ずつコピー
・1行に収まらないならあふれる分だけst2にコピー	・

if(st1[0]!='\0')
	DrawFormatString(x,y   ,col, "%s" ,st1);
if(st2[0]!='\0')
	DrawFormatString(x,y+20,col, "%s" ,st2);
雰囲気としてはこんな感じでしょうか。

夏天

Re:テキストにて

#3

投稿記事 by 夏天 » 18年前

そういうやり方があったのですか
ためになりました
ありがとうございます。
またわからないところは聞きにくるのでそのときもお願いします

閉鎖

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