中易网

想用vb6.0做一个程序,实现每点击一次按钮,窗口底色就变化一次

答案:3  悬赏:0  
解决时间 2021-01-17 02:02
  • 提问者网友:wodetian
  • 2021-01-16 01:17
想用vb6.0做一个程序,实现每点击一次按钮,窗口底色就变化一次
最佳答案
  • 二级知识专家网友:長槍戰八方
  • 2021-01-16 02:42
Public FORMCOLOR As Long
Private Sub Form_Load()
    Form1.BackColor = 0
    Timer1.Enabled = False
    Timer1.Interval = 100
End Sub
Private Sub Command1_Click()
    FORMCOLOR = Form1.BackColor
    Timer1.Enabled = True
End Sub
Private Sub Timer1_Timer()
    If Form1.BackColor < FORMCOLOR + 65536 Then
        Form1.BackColor = Form1.BackColor + &HFFF
    Else
        Timer1.Enabled = False
    End If
End Sub
追问:试了下好像不能随机换颜色?最后变成黄色怎么一下又变红了?
追答:这个不是三原色逐渐增加的是从000000到FFFFFF逐渐增加的,0000FF下一步直接变为000100,你具体要求是啥啊。比如初始颜色 或者要变成的颜色和原来有什么关系没有
追问:我想让它点一下按钮就随机换一种颜色,而且是慢慢变过去就像那种淡入淡出的效果。初始颜色我用的是随机生成RGB三个数,这样一运行就显示一种颜色然后开始变化。我用的是一堆if+timer,效果不太好要么闪的厉害要么没啥变化 虽然没实现还是感谢你帮忙回答哈
追答:Public colorR, colorG, colorB, RndR, RndG, RndB, i
Private Sub Form_Load()
    Form1.BackColor = 0 '初始颜色纯黑色
    Timer1.Enabled = False
    Timer1.Interval = 20 '间隔时间可以自行修改
End Sub
Private Sub Timer1_Timer()
    '第i次增加值,假如经过100次变至目标色
    addR = (RndR - colorR) / 100 * i
    addG = (RndG - colorG) / 100 * i
    addB = (RndB - colorB) / 100 * i
    '新RGB实际值,超过FF(255)的求余
    newr = (colorR + addR) Mod 255
    newg = (colorG + addG) Mod 255
    newb = (colorB + addB) Mod 255
    If i <= 100 Then
        Form1.BackColor = RGB(Int(newr), Int(newg), Int(newb))
        i = i + 1
    Else
        Timer1.Enabled = False
    End If
End Sub
Private Sub Command1_Click()
    '获得当前色,转为10进制分给colorR、G、B
    colorall = Right("000000" & Hex(Form1.BackColor), 6)
    colorR = Val("&H" & Mid(colorall, 5, 2))
    colorG = Val("&H" & Mid(colorall, 3, 2))
    colorB = Val("&H" & Mid(colorall, 1, 2))
    '生成随机颜色RGB值
    RndR = Int(Rnd() * 256)
    RndG = Int(Rnd() * 256)
    RndB = Int(Rnd() * 256)
    Timer1.Enabled = True
    i = 1
End Sub
全部回答
  • 1楼网友:迟山
  • 2021-01-16 03:43
如果用百叶窗的形式不知道是不是可以呢?
追问:什么意思
追答:不知道你说的渐变是什么意思?
追问:我想让一种颜色慢慢的变成另一种颜色,不是一下子换一种开始我想用一个timer让rgb三个量一点点地变化,可是效果不太好
追答:我可以试试。
我做了在rgb三色之间变化的。
  • 2楼网友:老鼠爱大米
  • 2021-01-16 02:53
For i = 0 To 255 Step 1
    For j = 0 To 255 Step 1
        For k = 0 To 255 Step 1
            Me.BackColor = RGB(i, j, k)
            DoEvents
        Next
    Next
Next
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息