表示する文字列の横幅と高さを調べる

最終更新 2003 09/22

サンプルのダウンロード → API_GetTextExtentPoint32.lzh(37k)

サンプルプログラムのスクリーンショット

サンプルソースコード


	
GetTextExtentPoint32 関数
	
	対応しているバージョン
	95, 98, Me, NT3.5以降, CE2.0以降, 2000, XP
		
	使用するヘッダとライブラリ
	wingdi.h
	gdi32.lib
ゲームでセリフなんかを表示するときに、表示する文字列が どれくらいのサイズになるか分かったらい〜な〜って思うことが あるのですが、そういう時に使えます。 文字列の横幅が分かれば表示したい場所に文字が入りきらない時に 適当な位置で文字を改行させたりできます。 ゲームの場合、使う文字は全て絵で書いてしまう場合もあるのですが 文字用の絵を用意するのが面倒な時は(英数字しか使用しないとしても 62種類以上必要)、フォントをそのまま使いたいものです。 フォントの場合、ユーザーの環境によってはサイズがまちまちなので 自分のマシンで100ピクセルに10文字入るからといって ユーザーのマシンでもそうかというと「それはどうかな!」と 言うしかないです。 それなら、ゲームを開始する前に、自分で固定サイズのフォントを 作って設定してしまえばいいようにも思えますが、固定ピッチに 設定しない限り、半角英数字を使用すると文字が詰めて表示されて しまうので、結局、正確なサイズが分かりません。 それなら、固定ピッチのフォントにすればいーじゃんとも思うのですが 固定ピッチにすると文字と文字の間が妙に開いてしまうので、見た目が 気に入らないときは「やっぱり固定じゃない方がいい!」なんてことに なってしまうので、どっちにしても文字列のサイズは分かった方が 良いですねぇ・・・。 表示する文字列のサイズを調べるには GetTextExtentPoint32() 関数を 使用します。 引数には、文字列を表示する画面のHDCと、表示する文字 表示する文字の文字数、あとは表示する文字のサイズを取得するための SIZE 構造体のポインタを指定します。 GetTextExtentPoint32( HDC, "文字", 文字数, &SIZE ); SIZE 構造体はメンバに cx と cy を持っています。 どちらも int 型で、構造体の名前の通り、何かのサイズを設定したり 取得したりする目的で使用します。 GetTextExtentPoint32() 関数を呼ぶと、指定した SIZE 構造体の cx に横幅、cy に高さが格納されて返ってきます。 この cx と cy の値を見ればよいということですね。

| home |