Таблица разных цветов в C # - PullRequest
       1

Таблица разных цветов в C #

2 голосов
/ 06 сентября 2011

Я хотел бы иметь таблицу с различными цветами.Последующие цвета должны значительно отличаться.Каков наилучший подход для заполнения достаточно большой таблицы в соответствии с этим?Я хочу использовать большое количество разных цветов перед повторением подобных цветов.

Ответы [ 2 ]

1 голос
/ 07 сентября 2011

Вот мое решение (совместимое с Silverlight).

    IEnumerable<Color> VaryingColors(int seedIndex)
    {
        int maxValue = 1 << 24;
        int index = seedIndex % maxValue;

        while (true)
        {
            byte r = 0;
            byte g = 0;
            byte b = 0;

            for (int i = 0; i < 24; i++)
            {
                if ((index & (1 << i)) != 0)
                {
                    switch (i % 3)
                    {
                        case 0: r |= (byte)(1 << (23 - i) / 3); break;
                        case 1: g |= (byte)(1 << (23 - i) / 3); break;
                        case 2: b |= (byte)(1 << (23 - i) / 3); break;
                    }
                }
            }

            yield return Color.FromArgb(0xFF, r, g, b);

            index = (index + 1) % maxValue;
        }
    }

Вот пример использования. Создайте новое приложение Silverlight и добавьте ListBox файл MainPage.xaml следующим образом: -

    <ListBox ItemsSource="{Binding}">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <Rectangle Width="200" Height="20" Fill="{Binding}" />
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>

В конструкторе MainPage.Xaml.cs включите код, подобный следующему: -

   DataContext = VaryingColors(0).Take(100).Select(c => new SolidColorBrush(c));

Генератор цвета сгенерирует все 16 миллионов возможных цветов и сначала будет манипулировать самыми значимыми битами компонентов R G B. Может потребоваться немного больше работы, есть некоторые вхождения смежных цветов, которые более похожи, чем остальная часть последовательности, хотя они всегда заметно различаются.

Одним из улучшений может быть добавление фильтра в последовательность для отбрасывания слишком темных цветов или с очень низкой насыщенностью. Фактически может быть добавлен другой фильтр, чтобы отбрасывать цвет, который имеет оттенок, близкий к предыдущему цвету в последовательности.

0 голосов
/ 06 сентября 2011

Вы можете использовать Gridview в C #, а затем использовать

GridView_RowDataBound(object sender, GridViewRowEventArgs e)

метод для изменения цвета фона ячеек на любой нужный вам цвет.

    if (e.Row.RowType == DataControlRowType.DataRow)
    {
    e.Row.Cells[4].BackColor = System.Drawing.Color.FromName("#EE3333"); // makes the 4th cell red
    e.Row.BackColor = System.Drawing.Color.ForestGreen; // Makes the whole row Green
    }

с помощью этого метода вы можете покрасить ячейки по своему вкусу, используя цвета RGB.

http://rgbchart.com/

http://www.tayloredmktg.com/rgb/

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