用label和picturebox加上timer试一下Private Sub Form_Load() Timer1.Interval = 100 End SubPrivate Sub Timer1_Timer() With Label1 If .Left < 0 - .Width Then .Left = Picture1.Width Else .Left = .Left - 50 End If End With End Sub
请注意,我要的是上滚,而且如果用label的话,我调入的文本比较多,那么就显示不完全了。 以下是我的程序,请看看有什么问题。 Private Sub Form_Load() Me.Show Dim intY As Integer, intX2 As Integer, intY2 As Integer 'picBg.Picture = LoadPicture(App.Path & "\1.jpg") 'intX2 = (Me.ScaleWidth - picBg.ScaleWidth) / 2 intX2 = 10 ' intY2 = (Me.ScaleHeight - picBg.ScaleHeight) / 2 intY2 = 10 Dim fsoTxt As New FileSystemObject, tsTxt As TextStream Do intY = picBg.ScaleHeight picBg.ForeColor = vbBlack picBg.Font.Size = 56 picBg.Font.Bold = True Do picBg.CurrentY = intY intY = intY - 1 Set tsTxt = fsoTxt.OpenTextFile(App.Path & "\1.txt") picBg.Print tsTxt.ReadAll If picBg.CurrentY < 0 Then Exit Do BitBlt Me.hDC, intX2, intY2, picBg.ScaleWidth, _ picBg.ScaleHeight, picBg.hDC, 0, 0, vbNotSrcCopy picBg.Cls DoEvents Dim lngK As Long For lngK = 0 To 0 Next lngK Loop Loop End Sub
程序启动时创建一个离屏缓冲位图,然后每次要刷新时就更新那个位图,再bitblt
然后你还可以用 ScrollWindowEx 把已经在屏幕上的内容往上移,这样只用重画窗口底部的内容就可以了。
label显示文本,frame是label的容器,timer触发修改frame的top,搞定,无闪烁
Timer1.Interval = 100
End SubPrivate Sub Timer1_Timer()
With Label1
If .Left < 0 - .Width Then
.Left = Picture1.Width
Else
.Left = .Left - 50
End If
End With
End Sub
以下是我的程序,请看看有什么问题。
Private Sub Form_Load()
Me.Show
Dim intY As Integer, intX2 As Integer, intY2 As Integer
'picBg.Picture = LoadPicture(App.Path & "\1.jpg")
'intX2 = (Me.ScaleWidth - picBg.ScaleWidth) / 2
intX2 = 10
' intY2 = (Me.ScaleHeight - picBg.ScaleHeight) / 2
intY2 = 10
Dim fsoTxt As New FileSystemObject, tsTxt As TextStream
Do
intY = picBg.ScaleHeight
picBg.ForeColor = vbBlack
picBg.Font.Size = 56
picBg.Font.Bold = True
Do
picBg.CurrentY = intY
intY = intY - 1
Set tsTxt = fsoTxt.OpenTextFile(App.Path & "\1.txt")
picBg.Print tsTxt.ReadAll
If picBg.CurrentY < 0 Then Exit Do
BitBlt Me.hDC, intX2, intY2, picBg.ScaleWidth, _
picBg.ScaleHeight, picBg.hDC, 0, 0, vbNotSrcCopy
picBg.Cls
DoEvents
Dim lngK As Long
For lngK = 0 To 0
Next lngK
Loop
Loop
End Sub