PDA

View Full Version : یک مشکل با ارتفاع کارکتر



Delphi_OnLine999
چهارشنبه 25 مرداد 1385, 01:26 صبح
سلام ...
من می خواستم ارتفاع یک کارکتر از یک فونت مشخص را به دست آورم و تنها تابعی که پیدا کردم که اندازه ارتفاع واقعی یک کارکتر را بدهد را پیدا کردم ولی طرز کار آن را متوجه نشده ام ....این تابع GetGlyphOutline ..... با تشکر

mzjahromi
چهارشنبه 25 مرداد 1385, 06:44 صبح
با این کد میشه


var
H:Integer;
begin
Canvas.Font.Name:='tahoma';
Canvas.Font.Size:=14;
H:=Canvas.TextHeight('This is a test');

ولی فکر کنم تو شرایط مختلف فرق بکنه.

Delphi_OnLine999
پنج شنبه 26 مرداد 1385, 00:49 صبح
با تشکر از شما دوست خوبم
این کد برای گرفتن حداکثر ارتفاع است ولی من می خواهم ارتفاع یک کارکتر خاص مثل این"." نقطه را در یک فونت خاص مثل tahoma بدست بیاورم.

البته با استفاده از تابع GetGlyphOutline...

Delphi_OnLine999
جمعه 27 مرداد 1385, 00:36 صبح
جواب رو پیدا کردم کد رو اینجا می گذارم تا دوستان استفاده کنند.




function GetGlyphOutLine_Info(Font:string;Ch:Char;var BlackBoxX,BlackBoxy:Integer):Boolean ;
const
mat2: TMat2 = (eM11: (Fract: 0; Value: 1); eM12: (fract: 0; Value: 0);
eM21: (Fract: 0; Value: 0); eM22: (fract: 0; Value: 1));
// ch = '.';
// font ='tahoma'; //'arial';
var
dc: hdc;
glyph: TGlyphMetrics;
P: pointer;
Size: Word;
F: File;
begin
dc := getdc(0);
selectobject(dc, createfont(400, 0, 0, 0, fw_Normal, 0, 0, 0, ansi_charset,
out_tt_precis, clip_tt_always, proof_quality, ff_dontcare,
pchar(Font)));
Size := GetGlyphOutLine(dc, word(ch), ggo_native, glyph, 0, nil, mat2);
BlackBoxX:=glyph.gmBlackBoxX;
BlackBoxY:=glyph.gmBlackBoxY;
end;


اگر دوستان اطلاعات بیشتری دارند متشکر می شوم.