ページ 1 / 1
どんな文字列も必ず中央に表示する
Posted: 2009年12月29日(火) 15:05
by 研究生
どんな長い文字列でも中央に表示できるように
文字数と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:どんな文字列も必ず中央に表示する
Posted: 2009年12月29日(火) 15:18
by kazuoni
関数DrawFormatStringを使っているので、DXライブラリと決め打ちして・・・
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:どんな文字列も必ず中央に表示する
Posted: 2009年12月29日(火) 15:24
by 研究生
ご回答ありがとうございます。
すみません。使っているのはDXライブラリであっております。
上記の場合
x1=描写枠の左端のx座標
x2=描写枠の右端のx座標
がわかってないと出来なくはないでしょうか。
出来れば文字列を渡すだけで中心に表示したいです。
Re:どんな文字列も必ず中央に表示する
Posted: 2009年12月29日(火) 15:41
by kazuoni
> 出来れば文字列を渡すだけで中心に表示したいです。
中心とはどこからどこの中心でしょうか?
もし一定範囲の中心ならば、関数内でconst int型で範囲を定義すればよいと思いますが・・・
Re:どんな文字列も必ず中央に表示する
Posted: 2009年12月29日(火) 15:47
by 研究生
画面のx軸(MAX640)の中心にしたいです。
例えば
「あ」という文字なら320-FONT_SIZE/2に表示といった感じです。
わかりにくくて申し訳ないです。
どんな文字の長さでも左右の中心に表示したいです。
Re:どんな文字列も必ず中央に表示する
Posted: 2009年12月29日(火) 15:55
by kazuoni
maxという意味がよくわからないのですが・・・
サイズは可変ではなく、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));
}
Re:どんな文字列も必ず中央に表示する
Posted: 2009年12月29日(火) 16:06
by 研究生
ご回答ありがとうございます。
出来ました。助かりました。
ここの方は皆様親切ですね。