随机背面颜色为标签文本

时间:2014-08-03 12:43:01

标签: vb.net

在我的第一个表单中,他们是一个名为lbltitle的标签,用于显示标题,我根据登录的用户更改了颜色。以下是选择颜色的代码: -

Dim n As Integer = Len(userId) Mod 3
Dim lblcolor As Color
Select Case n
Case 0 : lblcolor = Color.Blue
Case 1 : lblcolor = Color.BlueViolet
Case 2 : lblcolor = Color.Red
End Select
lbltitle.ForeColor = lblcolor

我在userId长度的基础上改变颜色。

我在模块操作中使用随机数而不是3来扩展代码,然后我的代码将更改为:

 Dim random_no As Random = New Random(2)
 Dim n As Integer = Len(userId) Mod random_no.Next
 Dim lblcolor As Color
 Select Case n
 Case 0 : lblcolor = Color.Blue
 Case 1 : lblcolor = Color.BlueViolet
 Case 2 : lblcolor = Color.Red
 Case 3 : lblcolor = Color.AliceBlue
 Case 4 : lblcolor = Color.DarkGoldenrod
 End Select
 lbltitle.ForeColor = lblcolor

我的问题是,他们是否有可能为此生成随机颜色?

3 个答案:

答案 0 :(得分:3)

使用以下代码替换您的选择案例和随机数

Dim rand As New Random
lbltitle.ForeColor = Color.FromArgb(rand.Next(0, 256), rand.Next(0, 256), rand.Next(0, 256))

答案 1 :(得分:0)

以下是基于BackColor设置ForeColor的两种选择。该示例循环显示已知颜色

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

    'all KnownColors
    Dim allColors As List(Of Color) = (From ac In [Enum].GetValues(GetType(KnownColor))
                                       Select Color.FromKnownColor(DirectCast(ac, KnownColor))).ToList


    For Each c As Color In allColors
        Label1.BackColor = c 'try every color as BackColor

        ''alternative 1
        ' ''ForeColor is inverted BackColor
        ''Dim R As Integer = Not c.R
        ''Dim G As Integer = Not c.G
        ''Dim B As Integer = Not c.B
        ''Label1.ForeColor = Color.FromArgb(Label1.BackColor.A, R, G, B)

        'alternative 2
        Dim R As Integer = c.R
        Dim G As Integer = c.G
        Dim B As Integer = c.B
        If (R * R + G * G + B * B) < 128 * 128 Then
            Label1.ForeColor = Color.White
        Else
            Label1.ForeColor = Color.Black
        End If
        Label1.Refresh()
        Threading.Thread.Sleep(50)
    Next


End Sub

答案 2 :(得分:0)

您可以在随机点击颜色时使用按钮

Public Class Form1

Dim rnd As New Random

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Me.lbltitle.foreColor = Color.FromArgb(255, rnd.Next(255), rnd.Next(255), rnd.Next(255))
End Sub

End Class