想用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
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三色之间变化的。
追问:什么意思
追答:不知道你说的渐变是什么意思?
追问:我想让一种颜色慢慢的变成另一种颜色,不是一下子换一种开始我想用一个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
For j = 0 To 255 Step 1
For k = 0 To 255 Step 1
Me.BackColor = RGB(i, j, k)
DoEvents
Next
Next
Next
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息