label 的文本是不是定长的???

解决方案 »

  1.   

    哈哈~~文本怎么可能随你变长变短啊?文本只有几个固定的尺寸大小可以选择的。所以是不可能的。
    除非你自己去做字体库,或者是始量字体。
    要么不要是label,而是把那几个字做成一张图片放在image里,image到是可以实现你说的那样让里面的图片(文本是肯定不可以的)适合自己的大小而改变。
      

  2.   

    用一个PICTURE控件,里面放若干个LABEL(或用控件数组),AUTOSIZE设为TRUE,每个LABEL里放一个字,这样大概可以满足你的要求。具体算法,应该不是很难的。
      

  3.   

    谁能做出一个windows来????FUCK...为什么我每次提问都没有人会答!!!!
      

  4.   

    看来不能用Label
    因不能得到Hwnd
    如用TextBox,或pictureBox模仿的话
    可以用
    DrawTextEx
    Declare Function DrawTextEx Lib "user32" Alias "DrawTextExA" (ByVal hDC As Long, ByVal lpsz As String, ByVal n As Long, lpRect As RECT, ByVal un As Long, lpDrawTextParams As DRAWTEXTPARAMS) As Long

    DrawText
    Declare Function  Lib "user32" Alias "DrawTextA" (ByVal hdc As Long, ByVal lpStr As String, ByVal nCount As Long, lpRect As RECT, ByVal wFormat As Long) As Long
    自己画
      

  5.   

    难道用label就不能实现吗?我已经没有办法改变的,因为系统中已经再用label,要改动的话,除非退掉重写!
      

  6.   

    label是肯定不可以的了。你死心了吧。
    我有一个办法可以做到你的这个效果。但那要用picturebox,和image。
    程序如下:
    With Picture1
        .AutoRedraw = True
        .Appearance = 0
        .BorderStyle = 0
        .Width = Label1.Width
        .Height = Label1.Height
        Picture1.Print Label1.Caption
        Set .Picture = .Image
    End With
    With Image1
        .Picture = Picture1.Picture
        .Stretch = True
    End With
    MsgBox "现在,你就把这个image当作label来使用吧~随便改变它的大小,里面的字体也会岁image的大小而改变并适应它!"我想也是现在你所能做的唯一一个能实现“随变改变文子大小”的方法了吧~
    祝你编程愉快。  ^_^
      

  7.   

    补充一下:
    如果你以后还要读取picturebox中的文字的话(就如label中的Caption),那么你可以专门用一个变量来保存picturebox里的文字。这样做就是麻烦了点。
    但应该也只有这个办法了。
      

  8.   

    自己写一个控件:包含一个容器以及一个LABEL数组
    当容器大小发生变化时调整LABEL控件数组的间距
    当给控件的CAPTION赋值时动态装载LABEL控件数组
    大体思路而已
      

  9.   

    想玩点文字横向拉宽的特效吗?很简单,你不需要去计算什么 width + 1 之类的象素值,只需调用一个 api 函数,就可以搞定!她就是——settextcharacterextra()   这个函数的作用是改变字符串中各字符的间隔大小。想去开 api viewer 了吗?且慢!api viewer 中对此函数的声明有问题!!!怎么搞的?不知道,问微软去吧。 api viewer 的声明:private declare function settextcharacterextra lib "gdi32" alias "settextcharacterextraa" (byval hdc as long, byval ncharextra as long) as long 应该是:private declare function settextcharacterextra lib "gdi32" (byval hdc as long, byval ncharextra as long) as long   即:api viewer 中多加了在 gdi32.dll 中的入口("settextcharacterextraa"),不信你试试,准说“入口函数找不到”。好了,知道了问题就好办了,你先准备一个 picturebox 吧,我们就用它的 hdc。 private i as long private sub timer1_timer() 
      timer1.interval = 100 
      with picture1 
        .cls 
        settextcharacterextra .hdc, i 
        picture1.print "midnight" 
        i = i + 1 
        if i >= 30 then i = 1 
      end with 
    end sub   当然,我这里用的是 timer,你如果觉得 cpu 占用率太高的话,就自己改嘛,比如说加在一个循环中,用系统时钟的 timer 值来控制间隔时间就行了。
      最后,美化你的 picturebox,改一个好看的字体、醒目的颜色,甚至在循环中改变颜色和字体大小、用 step 值使它左右循环拉伸等等,随你怎么改!   怎么样?这个东东加到你的 about 窗体中去,一定很不错吧。我保证速度和资源消耗都要优于那种控制象素加减的方法。好了,今儿就说到这儿,俺去也!   
      

  10.   

    Private Declare Function SetTextCharacterExtra Lib "gdi32" (ByVal hdc As Long, ByVal nCharExtra As Long) As Long
    Private i As LongPrivate Sub timer1_timer()
        Timer1.Interval = 100
        With Picture1
            .Cls
            SetTextCharacterExtra .hdc, i
            Picture1.Print "midnight"
            i = i + 1
            If i >= 30 Then i = 1
        End With
    End Sub
    结贴吧