どんな長い文字列でも中央に表示できるように
文字数とFONT_SIZEから表示位置xを求めたいです。
FONT_SIZEはSetFontSize(FONT_SIZE);で指定した値です。
int x =(640-strlen(mess)/2*FONT_SIZE-FONT_SIZE)/2;
DrawFormatString(x,420,GetColor(255,255,255),"%s",mess);//disp配列の文字データを表示
どのようにすればよいのでしょうか・・・・。
どんな文字列も必ず中央に表示する
Re:どんな文字列も必ず中央に表示する
関数DrawFormatStringを使っているので、DXライブラリと決め打ちして・・・
x1=描写枠の左端のx座標
x2=描写枠の右端のx座標
str=文字列
<戻り値>
描写するx座標
自分はこんな感じで使っていました。
同じようにy座標の中心も計算できますね。
int CalcCenterX(int x1,int x2,const char *str) { int StrLen,StrWidth; StrLen=(int)strlen(str); StrWidth= GetDrawStringWidth(str,StrLen); return (int)((x1+((x2-x1)/2))-(StrWidth/2)); }<引数>
x1=描写枠の左端のx座標
x2=描写枠の右端のx座標
str=文字列
<戻り値>
描写するx座標
自分はこんな感じで使っていました。
同じようにy座標の中心も計算できますね。
Re:どんな文字列も必ず中央に表示する
ご回答ありがとうございます。
すみません。使っているのはDXライブラリであっております。
上記の場合
x1=描写枠の左端のx座標
x2=描写枠の右端のx座標
がわかってないと出来なくはないでしょうか。
出来れば文字列を渡すだけで中心に表示したいです。
すみません。使っているのはDXライブラリであっております。
上記の場合
x1=描写枠の左端のx座標
x2=描写枠の右端のx座標
がわかってないと出来なくはないでしょうか。
出来れば文字列を渡すだけで中心に表示したいです。
Re:どんな文字列も必ず中央に表示する
> 出来れば文字列を渡すだけで中心に表示したいです。
中心とはどこからどこの中心でしょうか?
もし一定範囲の中心ならば、関数内でconst int型で範囲を定義すればよいと思いますが・・・
中心とはどこからどこの中心でしょうか?
もし一定範囲の中心ならば、関数内でconst int型で範囲を定義すればよいと思いますが・・・
Re:どんな文字列も必ず中央に表示する
画面のx軸(MAX640)の中心にしたいです。
例えば
「あ」という文字なら320-FONT_SIZE/2に表示といった感じです。
わかりにくくて申し訳ないです。
どんな文字の長さでも左右の中心に表示したいです。
例えば
「あ」という文字なら320-FONT_SIZE/2に表示といった感じです。
わかりにくくて申し訳ないです。
どんな文字の長さでも左右の中心に表示したいです。
Re:どんな文字列も必ず中央に表示する
maxという意味がよくわからないのですが・・・
サイズは可変ではなく、WindowMode時の
クライアント領域のデフォルトサイズであるwidth=640の中心に
文字列を描写したいということでよろしいでしょうか?
サイズは可変ではなく、WindowMode時の
クライアント領域のデフォルトサイズであるwidth=640の中心に
文字列を描写したいということでよろしいでしょうか?
int CalcCenterX(const char *str) { const int x1=0; const int x2=640; int StrLen,StrWidth; StrLen=(int)strlen(str); StrWidth= GetDrawStringWidth(str,StrLen); return (int)((x1+((x2-x1)/2))-(StrWidth/2)); }