Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Как узнать размер строки в пикселях?


Автор: mpdasa 3.6.2012, 09:00
У меня есть строка. Хочу узнать размер в пикселях. Это надо для того, чтобы потом узнав размер окна, уменьшать размер строки (в окне) до тех пор, пока она не перестанет вылазить за край окна.

Автор: XperT 3.6.2012, 10:15
Код

function TForm1.getStringPixelWidth(str:string; const ufont:TFont):integer;
var
 DC : HDC;
 size : TSize;
 SaveFont : HFONT;
begin
  result := -1;
  DC := GetDC(0);
  SaveFont := SelectObject(DC, uFont.Handle);
  try
    if GetTextExtentPoint32(DC, PChar(str), length(str), size) then result := size.cx;
  finally
    SelectObject(DC,SaveFont);
    ReleaseDC(0, DC);
  end;
end;


Применение:
Код

procedure TForm1.Button1Click(Sender: TObject);
var
  w : integer;
begin
  w := getStringPixelWidth(Edit1.Text, Edit1.Font);
  ShowMessage(inttostr(w));
end;

Автор: Чучмек 3.6.2012, 10:18
form1.Canvas.TextWidth / form1.Canvas.TextHeight

Автор: XperT 3.6.2012, 11:20
Цитата(Чучмек @ 3.6.2012,  10:18)
form1.Canvas.TextWidth / form1.Canvas.TextHeight

Если контрол использует другой шрифт, то информация будет отличатся.

Автор: drkot 3.6.2012, 17:38
Цитата(XperT @  3.6.2012,  11:20 Найти цитируемый пост)
информация будет отличатся

а кто мешает вызвать в контексте используемого объекта?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)