首页 > 解决方案 > 在 Visual Basic 6 中为标签生成随机非重复颜色

问题描述

我想在 8 种不同颜色之间调用随机颜色,并将其显示在标签中作为 Visual Basic 中的背景色。如何在不重复特定标签上已标注的颜色的情况下显示颜色?

例如,如果在labelA1中调出红色并显示,如何确保在labelB1,labelC1或labelD1中不会调出并显示红色,而在labelA13或labelB16中可以调出红色?

下面是一张图片,可以帮助理解上面的例子。

在此处输入图像描述

标签: vb6

解决方案


使用此代码制作颜色列表,然后在每次使用时将它们从列表中删除。

Private Function RandomizeLabelColors() As Integer
    Randomize()
    Dim listOfColors As List(Of Color) = {Color.Red, Color.Blue, Color.Green, Color.Orange}.ToList
    Dim labels As List(Of Label) = {Label1, Label2, Label3, Label4, Label5, Label6, Label7, Label8,
        Label9, Label10, Label11, Label12, Label13, Label14, Label15, Label16}.ToList
    Dim i As Integer = 0
    Do Until listOfColors.Count = 0
        Dim targetIndex As Integer = Int(Rnd() * listOfColors.Count)
        labels(i).BackColor = listOfColors(targetIndex)
        labels(i + 4).BackColor = listOfColors(targetIndex)
        labels(i + 8).BackColor = listOfColors(targetIndex)
        labels(i + 12).BackColor = listOfColors(targetIndex)
        listOfColors.RemoveAt(targetIndex)
        i += 1
    Loop
    Return 0
End Function

我的标签在 4x4 网格中。

-镁


推荐阅读