Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > Вопрос по Random'у и Color'у =)


Автор: oleeg 16.7.2008, 02:29
Всем привет =)
Есть тут вопрос.Смысл вопроса - сформировать массив, в котором будут все цвета, потом с помощью рандома из этого массива извлекаеться цвет и он присваиваеться  pictureBox1.BackColor. Как это сделать?
Есть код,  только он не пашет.
Код

        // кнопка сменить backColor
        private void buttonChangeBackColor_Click(object sender, EventArgs e)
        {
            
            byte[] byteColors = new byte[Enum.GetValues(typeof(Color)).Length];
            Random rndColors = new Random();
            rndColors.NextBytes(byteColors);
           
         
            
        }


Т e код пашет, но при нажатии на кнопку buttonChangeBackColor выскакивает исключение
Код

Type provided must be an Enum.
Parameter name: enumType

Подскажите, пожалуйста, как правильно сделать. Заранее спасибо

Автор: Partizan 16.7.2008, 12:42
oleeg, Color это не enum, а статический класс...

Автор: Dennnis 16.7.2008, 13:09
Если тебе нужно выбрать случайный цвет из массива, то так:
Код

        Color[] colors = { Color.Red, Color.Blue, Color.Green/*, ...*/ };
        private void button1_Click(object sender, EventArgs e)
        {
            Random random = new Random();
            int i = random.Next(colors.Length);
            pictureBox1.BackColor = colors[i];
        }

Если вообще любой цвет, то так:
Код

        private void button2_Click(object sender, EventArgs e)
        {
            Random random = new Random();
            int r = random.Next(byte.MaxValue);
            int g = random.Next(byte.MaxValue);
            int b = random.Next(byte.MaxValue);
            Color color = Color.FromArgb(r, g, b);
            pictureBox1.BackColor = color;
        }


Добавлено через 2 минуты и 31 секунду
Или еще проще:
Код

        private void button2_Click(object sender, EventArgs e)
        {
            Random random = new Random();
            pictureBox1.BackColor = Color.FromArgb(random.Next(int.MaxValue));
        }

Автор: oleeg 16.7.2008, 15:02
Всем спасибо, решение нашел 
Код

   Random rnd = new Random();
            // случайный цвет присваиваем pictureBox1.BackColor
            pictureBox1.BackColor = Color.FromArgb(rnd.Next(255), rnd.Next(255),rnd.Next(255));

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)