C # - DotNetBar - Visual Studio - Тестирование оттенков цветов? - PullRequest
0 голосов
/ 20 декабря 2011

Я бы хотел поэкспериментировать с оттенком цвета менеджера стилей dotnetbar.В C # System.Drawing.Color довольно много цветов, поэтому я хотел бы создать простое приложение с кнопкой, которая шаг за шагом проходит через каждый цвет.

Я хотел бы сделать какой-то цикл foreach или что-то в этом роде, но он говорит, что System.Drawing.Color является типом.Я новичок в C #, есть ли способ сделать это?

Ответы [ 3 ]

1 голос
/ 20 декабря 2011

Вы ссылаетесь на именованные цвета, определенные в System.Drawing.Color структуре через статические свойства. Все они перечислены в документации, но, как вы обнаружили, интуитивно понятного способа их обхода нет.

Вместо этого вам нужно будет использовать Отражение (в упрощенном виде, код, который может видеть сам себя), чтобы добраться до них. По сути, вы получаете коллекцию всех общедоступных статических свойств в типе Color (которые, в данном случае, просто являются именованными цветами), а затем цикл по каждому из них.

Например, вы можете использовать такой код (предупреждение, не проверено!):

var colorType = typeof(System.Drawing.Color);
var staticProperties = colorType.GetProperties(BindingFlags.Static | BindingFlags.Public);
var colors = staticProperties.Select(prop => (Color)prop.GetValue(null, null));
foreach (Color clr in colors)
{
    // Test the color...
}
1 голос
/ 20 декабря 2011

Color.FromArgb делает свое дело.Используя это, вы можете создавать новые цвета.

Например, чтобы сделать красный:

Color c = Color.FromArgb(255, 0, 0); 

Кстати, "шаги через каждый цвет" могут быть немного больше.Есть 256 (альфа) х 256 (красный) х 256 (зеленый) х 256 (синий) цвета.Это 4294967296 комбинаций.

0 голосов
/ 20 декабря 2011

Если вы все еще хотите попробовать это, просто для удовольствия, я бы предложил следующее.

(Вы сказали, что вы новичок, поэтому я сделаю пошаговую инструкцию)

Мы сделаем простой пример и просто изменим цвет кнопки, которую будем нажимать.

  1. Создайте форму с помощью кнопки и добавьте к ней фонового работника (его можно найти на панели инструментов).
  2. Выберите backgroundWorker1, перейдите в представление событий и дважды щелкните событие DoWork.
  3. Теперь вы должны получить метод backgroundWorker1_DoWork.
  4. Добавить код:

    for (int r = 0; r <= 255; r++)
    {
        for (int g = 0; g <= 255; g++)
        {
            for (int b = 0; b <= 255; b++)
            {
                button1.BackColor = Color.FromArgb(r, g, b);
            }
        }
    }
    
  5. На кнопке вам теперь нужно только позвонить

    backgroundWorker1.RunWorkerAsync();
    

Теперь вы можете смотреть цвета ... долгое время. :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...