VCL에서는
Canvas에 그려지는 Text의 넓이 와 높이 등을 구해주는 Method가 있습니다.
TextWidth
TextHeight
TextExtent ..
그런데 TMemo에는 Canvas없습니다.
그러니 직접 만들어서 사용해야...
int __fastcall GetMemoHeight(TMemo *Memo,int LineCount)
{
TCanvas *Can=new TCanvas;
Can->Handle=GetDC(Memo->Handle);
Can->Font=Memo->Font;
int iHei=Can->TextHeight("W");
ReleaseDC(Memo->Handle,Can->Handle);
delete Can;
return iHei*LineCount;
}
//---------------------------------------------------------------------------
//사용예
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Memo1->Font->Size=9;
ShowMessage("Memo Font-Size 9 , Height="+IntToStr(GetMemoHeight(Memo1,1)));
Memo1->Font->Size=10;
ShowMessage("Memo Font-Size 10 , Height="+IntToStr(GetMemoHeight(Memo1,1)));
}
라인이 여러개면 ... GetMemoHeight호출시 LineCount를 지정해주면...
그럼..
linuxman 님이 쓰신 글 :
: 안녕하세요..
:
:
: 메모장에...
: Memo1->Lines->Add ("abc");
: Memo1->Lines->Add ("def");
: Memo1->Lines->Add ("hij");
: 처럼 여러 라인을 추가 했습니다.
: 여기서 abc 부터 , hij 가 차지하고 있는 글자의 높이를 구하려고 합니다...
: (abc의 상단부터..hij의 하단까지 )
:
: 메모장에서는 여러라인에 걸쳐있는 전체 글자의 높이를 어떻게 구할수 있나요?
:
: 수고하세요..
|