我使用了一个MenuStrip,它关联了我制作的一个类,以获得与默认设计不同的设计。
我创建了这段代码,允许我生成随机颜色并更改菜单的前景:
Dim randNum As Int32 = New Random().Next(0, 13)
Custom_Menu.Switch_Theme(Custom_Menu.Background_Color.Light, Color.FromArgb(randNum))
Form1.MenuStrip1.Invalidate()
菜单似乎总是变黑,我不明白为什么。 这是允许你改变颜色的方法,在我的班级中构建:
Public Shared Sub Switch_Theme(Background As Background_Color, Foreground As Color)
If Background = Background_Color.Black Then
BgColor = Color.Black
ItemColor = Color.White
Else
BgColor = Color.White
ItemColor = Color.Black
End If
ItemSelect = Foreground
End Sub
第一部分将改变菜单的背景颜色,第二部分将改变前景色。 可能是什么导致了这个?我也想从颜色 - 白色中排除,否则文本采用表单的颜色,用户无法看到菜单上写的内容。
答案 0 :(得分:0)
问题在于:
Dim randNum As Int32 = New Random().Next(0, 13)
Custom_Menu.Switch_Theme(Custom_Menu.Background_Color.Light, Color.FromArgb(randNum))
将0到12之间的随机颜色值传递给Color.FromArgb
方法。 ARGB是32位色彩空间,因此您的颜色值为0x00000000至0x0000000C。 0x00000000是黑色,0x0000000C是非常深蓝色,因此它看起来也可能是黑色。
答案 1 :(得分:0)
您的“随机”ARGB值始终介于0到12之间。您需要为每个频道生成一个随机数。
Static rnd As New Random()
Dim red As Integer = rnd.Next(0, 256)
Dim green As Integer = rnd.Next(0, 256)
Dim blue As Integer = rnd.Next(0, 256)
Custom_Menu.Switch_Theme(Custom_Menu.Background_Color.Light, Color.FromArgb(red, green, blue))
此外,您可能会在本文中找到我的答案: