2013-10-23 25 views
0

如何使我的lblAnzeige的颜色为红色,白色,绿色,黄色和蓝色? (所以,当我在btnGelb单击文本lblAnzeige改变其颜色的五名者之一)在我的代码它一个RGB颜色改变,但不正确的5那些:(随机颜色文本

private void btnGelb_Click(object sender, EventArgs e) 
{ 
    int summe = 0, z; 
    lblAnzeige.Text = " "; 
    while (summe <= 0) 
    { 
     z = r.Next(1, 6); 
     summe = summe + z; 
    } 
    lblAnzeige.Text += colors[summe - 1] + "\n"; 
    lblAnzeige.ForeColor = Color.FromArgb(Farbe.Next(256), Farbe.Next(256), Farbe.Next(256)); 
} 
+0

什么FARBE .Next()函数呢? – VladL

+3

'Farbe'可能是Random类型的对象。 – Dialecticus

+1

解决方案就是这样。将你的颜色存储到一个数组中,然后使用随机方法生成一个介于0和数组大小-1之间的数字。我只是写的过程中,你可以将其转换为代码 – Tauseef

回答

3

你可以存储你的颜色在列表或数组,然后随机选择一个从列表中。

static readonly IList<Color> myColors = 
     new[] { Color.Red, Color.Blue, Color.Green, Color.White, Color.Yellow }; 
private void btnGelb_Click(object sender, EventArgs e) 
{ 
    int summe = 0, z; 
    lblAnzeige.Text = " "; 
    while (summe <= 0) 
    { 
     z = r.Next(1, 6); 
     summe = summe + z; 
    } 
    lblAnzeige.Text += colors[summe - 1] + "\n"; 
    lblAnzeige.ForeColor = myColors[Farbe.Next(myColors.Count)]; 
} 
2
Private Function RandomColor() As System.Drawing.Color 
     Dim MyAlpha As Integer 
     Dim MyRed As Integer 
     Dim MyGreen As Integer 
     Dim MyBlue As Integer 
     Randomize() 
     MyAlpha = CInt(Int((254 * Rnd()) + 0)) 
     Randomize() 
     MyRed = CInt(Int((254 * Rnd()) + 0)) 
     Randomize() 
     MyGreen = CInt(Int((254 * Rnd()) + 0)) 
     Randomize() 
     MyBlue = CInt(Int((254 * Rnd()) + 0)) 
     Return Color.FromArgb(MyAlpha, MyRed, MyGreen, MyBlue) 

    End Function 

我已经有它在一个VB项目,我有......应该不难为你将它转换成C#

虽然我很喜欢对方的回答最好,这可能更迂回的方式工作

private void Random() 
    { 
     RandomNumber random = new RandomNumber(); 
     int randomInt = random.RandomInRange(1, 5); 
    if (randomInt == 1) 
      { 
       lblLabel.ForeColor = System.Drawing.Color.Red; 
      } 
      else if (randomInt == 2) 
      { 
       lblLabel.ForeColor = System.Drawing.Color.Yellow; 
      } 
    else if(randomInt ==3) 
      { 
     lblLabel.ForeColor = System.Drawing.Color.White; 
      } 
      else if (randomInt == 4) 
      { 
       lblLabel.ForeColor = System.Drawing.Color.Blue; 
      } 
      else if (randomInt == 5) 
      { 
       lblLabel.ForeColor = System.Drawing.Color.Green; 
      } 
    } 


class RandomNumber 
{ 
    public int RandomInRange(int l, int u) 
    { 
     Random generator = new Random(); 
     return generator.Next(l, u); 
    } 
} 
+1

来自OP:“*改变它的颜色在**五个***之一***”(强调我的) – JDB

+0

+1,因为虽然它没有回答OP的问题,但它仍然是一个有用的算法。但请注意,这将在可见光谱中产生任何*颜色,包括可能的文本背景颜色(使文本不可见)或两种视觉上无法区分的颜色。 – JDB

+0

好点,读得太快了。那么在这种情况下......(暂停,而我修复它) – Brandon

0

使用的字体颜色这种简单techenique,可以进一步扩大..

Random NewRGBColor = new Random(); 
    LastIssueTxtBox.ForeColor = Color.FromArgb(NewRGBColor.Next(256), NewRGBColor.Next(256), NewRGBColor.Next(256)); 

斯蒂芬