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;