Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

длина строки в пикселях [D7, XP]


Sergey2 ©   (2007-10-23 11:57:00) 

Так как же всё таки это сделать в дельфи ?

ALogFont.lfHeight := 12;
ALogFont.lfWidth := 5;
ALogFont.lfOrientation := 0;
ALogFont.lfEscapement := 0;
ALogFont.lfWeight := FW_MEDIUM;
ALogFont.lfItalic := 0;
ALogFont.lfUnderline := 0;
ALogFont.lfStrikeOut := 0;
ALogFont.lfCharSet := RUSSIAN_CHARSET;
ALogFont.lfOutPrecision := 0;
ALogFont.lfClipPrecision := 0;
ALogFont.lfQuality := 0;
ALogFont.lfPitchAndFamily := FF_SCRIPT;
ALogFont.lfFaceName := 'Verdana';
Font := CreateFontIndirect(ALogFont);

....

s :=  'длина строки';

_length := ??


Sergey2   (2007-10-23 12:10:00) [1]

>>Однокамушкин
спасибо! исчерпывающе.


Игорь Шевченко   (2007-10-23 12:08:00) [2]

Если с VCL, то

function GetTextWidthInPixels(AText: string; AControl: TControl): integer;
var
 propInfo: PPropInfo;
 thisFont: TFont;
begin
 Result := 0;

 propInfo := GetPropInfo(AControl.ClassInfo, 'Font');

 if propInfo <> nil then begin
   thisFont := TFont(GetObjectProp(AControl, 'Font'));

   if Assigned(thisFont) then
     with TControlCanvas.Create do
       try
         Control := AControl;
         Font.Assign(thisFont);
         Result  := TextWidth(AText);
       finally
         Free;
       end;
 end;
end;


Однокамушкин   (2007-10-23 12:06:00) [3]

Если без VCL
var
 Sz: TSize;

SelctObject(DC, Font);
GetTextExtentPoint32(DS, s, Length(s), Sz);
_length := Sz.cx;


Если с VCL
Canvas.Font.Handle := Font;
_length := Canvas.TextWidth(s);


Если сосем точно надо, вызывайте ещё функцию GetCharABCWidths для учёта выступающих за знакоместо частей первого и последнего символа


Desdechado   (2007-10-23 11:58:00) [4]

DrawText ( DT_CALCRECT )


Наверх

Титульная страница Поиск, карта сайта Написать письмо