|
당근 TextWidth는 대소문자가 같지않습니다.
폰트에는 두가지가 있는데 고정너비 폰트와 그렇지않은 경우죠.
글씨체중에.."굴림", "굴림체" 이런식으로 있는건 "굴림체"가 고정너비 폰트입니다.
폰트를 고정너비로 하고 하시면 될듯 싶습니다.
-locke
공부중 님이 쓰신 글 :
: 예전 답글에서요
: 폰트의 크기를 알아 오는 방법 에 아래와같이 쓰셨는데요
:
: 방법1)
: : //---------------------------------------------------------------------------
: : void __fastcall TForm1::Button1Click(TObject *Sender)
: : {
: : // INT size;
: : tagSIZE size;
: : char *ch="abcd";
: : GetTextExtentPoint32(GetDC(Edit1->Handle),ch ,4,&size);
: : ShowMessage(IntToStr(size.cx)+" "+IntToStr(size.cy));
: : }
: : //---------------------------------------------------------------------------
: :
: :
: :
: : 방법2)
: : 그런데 위 방법은 값이 좀 맞지 않는것 같더군요
: : 그래서 아래와같이 Canvas를 만들어서...
: : VCL의 TextExtent , TextWidth, TextHeight 를 이용해봤습니다.
: :
: : void __fastcall TForm1::BitBtn1Click(TObject *Sender)
: : {
: : tagSIZE size;
: : TCanvas *Can=new TCanvas;
: : Can->Handle=GetDC(Edit1->Handle);
: : size=Can->TextExtent("abcd");
: :
: : Can->Font->Size=Edit1->Font->Size; //Canvas의 Font를 설정해준다.
: : int hei=Can->TextHeight("abcd");
: : int wid=Can->TextWidth("abcd");
: :
: : ShowMessage(IntToStr(size.cx)+" "+IntToStr(size.cy));
: : delete Can;
: : }
: 2번째 방법을 사용 하여 보았으나 대문자로 바꾸면 길이는 달라집니다
: void __fastcall TForm1::BitBtn1Click(TObject *Sender)
: : {
: : tagSIZE size;
: : TCanvas *Can=new TCanvas;
: : Can->Handle=GetDC(Edit1->Handle);
: : size=Can->TextExtent(Edit2->Text);
: :
: : Can->Font->Size=Edit1->Font->Size; //Canvas의 Font를 설정해준다.
: : int wid=Can->TextWidth(Edit2->Text);
: :
: : ShowMessage((size.cx))
: : delete Can;
: }
: 에디트 1은 폰트의 크기를
: 에디트2는 문자열을 넣어 보았습니다
|