文字の間を詰めて表示したい
Posted: 2010年5月27日(木) 09:28
おはようございます、いつもお世話になっております、山崎です。
今回は、タイトルの通り文字と文字の間の間隔を狭めて表示する方法についてお伺いに参りました。
XPでVisualStudio2010にDXライブラリを使っております。
DrawStringToHandleやDrawStringを使用したときに表示される文字列の文字間隔がちょっと広すぎるので
これをを狭めたいと思い、一文字ずつ表示し文字ごとに表示する座標を指定してみようという方針で
以下のコードを書きました。
しかし実行してみると、指定した文字以降の全ての文字列まで表示されてしまい、
ぐっちゃぐちゃな文字列が表示されてしまいます。
(下のコードは実行結果を見やすくするため、一文字描画しようとするごとにY座標を変えています)
文字と文字の間隔を狭めて表示するには、どのような方法があるでしょうか。
今回は、タイトルの通り文字と文字の間の間隔を狭めて表示する方法についてお伺いに参りました。
XPでVisualStudio2010にDXライブラリを使っております。
DrawStringToHandleやDrawStringを使用したときに表示される文字列の文字間隔がちょっと広すぎるので
これをを狭めたいと思い、一文字ずつ表示し文字ごとに表示する座標を指定してみようという方針で
以下のコードを書きました。
しかし実行してみると、指定した文字以降の全ての文字列まで表示されてしまい、
ぐっちゃぐちゃな文字列が表示されてしまいます。
(下のコードは実行結果を見やすくするため、一文字描画しようとするごとにY座標を変えています)
文字と文字の間隔を狭めて表示するには、どのような方法があるでしょうか。
#include "DxLib.h"
#include <string>
using namespace std;
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow )
{
ChangeWindowMode( TRUE ) ;
if( DxLib_Init() == -1 )
return -1 ;
SetDrawScreen( DX_SCREEN_BACK ) ;
SetTransColor( 255 , 0 , 255 ) ;
string ExplanationText="全角で日本語の文字列。"; //文字間を詰めて表示したい文字列
int FontSize=15; //フォントサイズ
int FontHandle=CreateFontToHandle(NULL,FontSize,1,DX_FONTTYPE_ANTIALIASING_EDGE);//フォントハンドル
while( ProcessMessage() == 0)
{
clsDx();
ClsDrawScreen() ;
for(int i=0;i<ExplanationText.length();i++) //文字数の分だけ繰り返したい
//一文字ずつ、場所を指定して描画したい。しかし指定した文字以降の全ての文字列がその都度描画されてしまう
DrawStringToHandle(50+i*FontSize,100+i*FontSize,&ExplanationText,GetColor(255,255,255),FontHandle);
ScreenFlip();
}
DxLib_End() ;
return 0 ;
}