'没理解错的话,是窗体呈现静态渐变色的意思吧,而不是随着时间的改变,背景色发生动态渐变吧?如果是静态渐变色的话,考虑以下的代码(背景色随着时间改变的代码,也写了,在后面):
Dim flag As Integer
Private Sub Dither()
Dim i As Integer
For i = 0 To 255
Select Case flag Mod 7
Case 0
vcolor = RGB(0, 0, 255 - i)
Case 1
vcolor = RGB(0, 255 - i, 0)
Case 2
vcolor = RGB(255 - i, 0, 0)
Case 3
vcolor = RGB(0, 255 - i, 255 - i)
Case 4
vcolor = RGB(255 - i, 0, 255 - i)
Case 5
vcolor = RGB(255 - i, 255 - i, 0)
Case 6
vcolor = RGB(255 - i, 255 - i, 255 - i)
End Select
Me.Line (0, i)-(Screen.Width, i - 1), vcolor, B
Next
End Sub
Private Sub Form_Activate()
Me.DrawStyle = vbInsideSolid
Me.DrawMode = vbCopyPen
Me.ScaleMode = vbPixels
Me.DrawWidth = 2
Me.ScaleHeight = 256
Me.AutoRedraw = True
flag = 0
Dither
End Sub
Private Sub Form_Click()
flag = flag + 1
If flag > 6 Then flag = 0
Dither
End Sub
Private Sub Form_Resize()
Me.ScaleHeight = 256
Dither
End Sub
'背景色随着时间改变的代码,需要添加一个Timer1控件:
Dim flag As Integer
Private Sub Form_Activate()
Timer1.Enabled = True
Timer1.Interval = 1
End Sub
Private Sub Form_Click()
flag = flag + 1
If flag > 6 Then flag = 0
End Sub
Private Sub Timer1_Timer()
Static i As Integer
Select Case flag Mod 7
Case 0
vcolor = RGB(0, 0, 255 - i)
Case 1
vcolor = RGB(0, 255 - i, 0)
Case 2
vcolor = RGB(255 - i, 0, 0)
Case 3
vcolor = RGB(0, 255 - i, 255 - i)
Case 4
vcolor = RGB(255 - i, 0, 255 - i)
Case 5
vcolor = RGB(255 - i, 255 - i, 0)
Case 6
vcolor = RGB(255 - i, 255 - i, 255 - i)
End Select
i = i + 1
If i > 255 Then i = 0
Me.BackColor = vcolor
End Sub