トップページ > 記事閲覧
GetDrawFormatStringWidthの戻り値
名前:Dblue 日時: 2013/08/18 19:39

8月よりDXライブラリを使い始めた者です クイズゲームを作ろうと、現在メインのクイズ画面を作成しているのですが 事前に用意した画像の中央に文字列を表示させようとしてC++とDXライブラリを使い TxtWidth = GetDrawFormatStringWidth( quiz[id].AnsAJ ) / 2 ; DrawStringToHandle( 640-TxtWidth , 567+40 , quiz[id].AnsAJ , GetColor( 255 , 255 , 255 ) , FontHandle1 ) ; というコードを書いたのですが、どうしてもTxtWidthの中に255までしか返ってきません 描写自体はできるのですが、数値が足りないからか中央よりも少し右にずれてしまいます 自分でも調べてみたのですが、int型どころか、long型でも255までしか入りません 1行目の最後の「/ 2」を消して2行目の「640-TxtWidth」を「640-(TxtWidth/2)」としても変わりません 自分で数値を入力する分には256以上も指定できるのですが、int型の中には255までしか入らない、という感じになっているのでしょうか 元々C言語を使っていたので、C++では仕様が違うのでしょうか? OSはwindows Vista Home Premiumの32bitです (追記:使用しているソフトはMicrosoft Visual C++ 2010 Expressです) 回答よろしくお願いします
メンテ

Page: 1 |

Re: GetDrawFormatStringWidth ( No.1 )
名前:タミア 日時:2013/08/18 21:41

DrawStringToHandleで描画する文字列の長さを取得する場合は GetDrawStringWidthToHandleを使用してください。 //homepage2.nifty.com/natupaji/DxLib/function/dxfunc_graph2.html#R17N13 また、文字列描画関数に渡すx座標は 表示する左端位置の指定のため、 文字列の長さを取得した数値を/2する必要はないと思います。 (解像度にもよりますが、ウィンドウサイズが640ならそのコードの場合文字列が半分しか表示されません) int型の数値にいくつまでの数値が入るかは環境依存がありますが、 255までしか入らないということはないはずです。 そもそも、関数の引数がint型なので 本当に255までだったとしたら、直接指定する場合にもその影響を受けます。
メンテ
Re: GetDrawFormatStringWidthの戻り値 ( No.2 )
名前:Dblue(解決) 日時:2013/08/19 20:51

タミアさん 回答ありがとうございます 解像度は1280*1024で作っていますので、/2してちょうどいい壱に描画されました また、先ほどint型に255以上代入されているのを確認できました 元々使っていた「GetDrawFormatStringWidth」の仕様なのか、よく理由は分かっていませんが とにもかくにも、無事解決しました ありがとうございました
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存