如何让label中的文字垂直,但是字符间的间隔不大,和横向一样的间隔距离,我试了在caption中回车间隔太大了,请高手赐教!!!

解决方案 »

  1.   

    每个汉字后插入一个回车(chr(13))
    或者设为 禁止 自动大小,同时调整label宽度为一个汉字宽
      

  2.   


      Label1.Canvas.Font.Size:=Label1.Font.Size;
      Label1.Width:=Label1.Canvas.TextWidth('字');
      Label1.Height:=Label1.Canvas.TextWidth(Label1.Caption);
      Label1.AutoSize:=false;
      Label1.WordWrap:=true;
      

  3.   

    或:  Label1.Canvas.Font.Size:=Label1.Font.Size;
      Label1.Width:=Label1.Canvas.TextHeight(Label1.Caption);
      Label1.Height:=Label1.Canvas.TextWidth(Label1.Caption);
      Label1.AutoSize:=false;
      Label1.WordWrap:=true;
      

  4.   

    用CreateFont()创建倾斜的逻辑字体,然后选入Label1的DC
      

  5.   

    try
    function TForm1.VString(ss:AnsiString):AnsiString;
    var
      ass:AnsiString;
      ii,ll:Integer;
      cc:Byte;
    begin
      ass:='';
      ll:=Length(ss);
      ii:=1;
      while ii<=ll do
      begin
        cc:=ord(ss[ii]);
        if (cc>160) then
        begin
          ass:=ass+ss[ii]+ss[ii+1]+''#13'';
          ii:=ii+2;
        end
        else
        begin
          ass:=ass+ss[ii]+''#13'';
          ii:=ii+1;
        end;
      end;
      result:=ass ;
    end;procedure TForm1.btn1Click(Sender: TObject);
    begin
      Label1.Caption:='这里发言,表示您接受了CSDN社区的用户行为准则'  ;
      Label1.Caption:=VString(Label1.Caption);
    end;
      

  6.   

    这样就已经可以了:
    function VString(ss:WideString):WideString;
    var i:Integer;
    begin
      for i:=1 to Length(ss) do result:=result+ss[i]+#13;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      Label1.Caption:=VString('这里发言,表示您接受了CSDN社区的用户行为准则');
    end;
      

  7.   

    能想到两种方法:
    1,设置WordWrap为True,把Label的宽度调整为一个字符的宽度(比较山寨)
    2,用GDI+,DrawString,设置StringFormatFlagsDirectionVertical格式
      (参考http://www.cnblogs.com/del/archive/2009/12/22/1629717.html
      

  8.   

    咦,才发现:当内容为单字节字符时,即使WordWrap:=true,Caption中内容打死都不回头(行)!必须在每个字符间插入一个空格才回行。楼上说得对,想随意控制字符的显示效果,可以参考那个连接中,万一老师的方法。但是,如果显示的效果并不一定是那么要求高的话,使用GDI+来显示一个Caption,就有点太费劲了,若多几个Caption,还得写个通用函数去处理...
      

  9.   

    若果非得要那么严格不可,换了我,我宁愿写个函数,动态生成多个TLabel,每个对应一个字符来显示,将Transparent设置为true,间隔要多密有多密,重叠都可以。
      

  10.   

    to gzzai: 对哦,WordWrap需要配合有分隔符才能起效,需要插入空格,稍有点麻烦。