どんな長い文字列でも中央に表示できるように
文字数と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配列の文字データを表示
どのようにすればよいのでしょうか・・・・。
どんな文字列も必ず中央に表示する
-
kazuoni
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座標
がわかってないと出来なくはないでしょうか。
出来れば文字列を渡すだけで中心に表示したいです。
-
kazuoni
Re:どんな文字列も必ず中央に表示する
> 出来れば文字列を渡すだけで中心に表示したいです。
中心とはどこからどこの中心でしょうか?
もし一定範囲の中心ならば、関数内でconst int型で範囲を定義すればよいと思いますが・・・
中心とはどこからどこの中心でしょうか?
もし一定範囲の中心ならば、関数内でconst int型で範囲を定義すればよいと思いますが・・・
-
研究生
Re:どんな文字列も必ず中央に表示する
画面のx軸(MAX640)の中心にしたいです。
例えば
「あ」という文字なら320-FONT_SIZE/2に表示といった感じです。
わかりにくくて申し訳ないです。
どんな文字の長さでも左右の中心に表示したいです。
例えば
「あ」という文字なら320-FONT_SIZE/2に表示といった感じです。
わかりにくくて申し訳ないです。
どんな文字の長さでも左右の中心に表示したいです。
-
kazuoni
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));
}