我现在有一个Label控件,它的AutoSize属性设为false,我要在Label的Caption上显示一些字符串,
字符串的长度如果在Label显示不完则需要把Label的字体设小一点,直到刚好能显示完为止。
    已知到Label的长度,Label的字体名称,字符串的个数。请问怎样才能做到字体的自动缩放?

解决方案 »

  1.   

    这个问题必须有字数的限制,如果没有,你的 一个label中要是显示一篇文章,怎么办啊  
    而且字体不能无限的缩小,具体一点的说来
      

  2.   

    简单一点就是在Label上显示的字体大小能够根据字数的多少自动缩放,使得要显示在Label上的字符串能够完全显示出来,当然字数的多少会有一个限制。难点就是:假如Label的字体设为“宋体”,size为15,难就难在不能获取到每个字的宽度和字体“宋体”、Size之间的关系
      

  3.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      intFWidth:array[1..20] of Integer;
      intCount:Integer;
      intPWidth:Integer;
      i:Integer;
    begin
      Label1.AutoSize:=True;
      Label2.AutoSize:=False;  Label1.Caption:='W';  for i:=1 to 20 do
      begin
        Label1.Font.Size:=i;
        intFWidth[i]:=Label1.Width ;
      end;  Label2.Caption:=Edit1.Text;
      intCount:=Length(Label2.Caption);
      intPWidth:=Label2.Width div intCount;  for i:=20 downto -1 do
        if intFWidth[i]<= intPwidth then
          Break;  Label2.Font.Size:=intFWidth[i];end;