Показать сообщение отдельно
  #5  
Старый 19.06.2008, 00:47
Аватар для SedmoiDemon
SedmoiDemon SedmoiDemon вне форума
Прохожий
 
Регистрация: 11.05.2008
Сообщения: 14
Репутация: 10
По умолчанию

san-46 и ART, рахмет большой за разъеснения.
Суть дела в том чтобы я на прямоугольнике с помощью TCanvas писал текст, но так, чтобы в зависимости от програмно изменяемых размеров прямоугольника, изменялся размер шрифта, чтобы текст заполнял как можно большее пространство прямоугольника и при этом коректно отображался.. набросал такую функцию:
Код:
function SetSizeToFont(Canvas: TCanvas; const Width, Heigth:integer; const S: string):integer;
//Canvas - указывал изначальный Canvas, со стилем шрифта, хз можно 
//проще.. не было желания :)
//Width, Heigth - ну толщина и длинорослость...
//S - текст 
//result - необходимый размер шрифта.. вроде фурычет функция :) 
var
c:boolean;
f:integer;
begin
f:=0;
c:=true;
while c = true do
  begin
  inc(f);
  Canvas.Font.Size:=f;
  if (Canvas.TextWidth(s)>=Width) then
    c:=false;
  end;
c:=true;
f:=Canvas.Font.Size;
if Canvas.TextWidth(s)>Width then
while c = true do
  begin
  f:=f-1;
  Canvas.Font.Size:=f;
  if Canvas.TextWidth(s)<=Width then
  c:=false;
  end;
c:=true;
f:=Canvas.Font.Size;
if Canvas.TextHeight(s)> Heigth then
while c = true do
  begin
  f:=f-1;
  Canvas.Font.Size:=f;
  if Canvas.TextHeight(s)<=Heigth then
  c:=false;
  end;
result:=Canvas.Font.Size;
end;
__________________
Как тьма ищет без солнца свет,
Так свет ищет без мрака тьму...
Как жаль, что весь этот бред
Понятен лишь мне одному...
Ответить с цитированием