Как я могу прочитать Series.Color во время выполнения при использовании ChartColorPalette? - PullRequest
4 голосов
/ 28 марта 2012

У меня есть график с несколькими сериями.Я использую ChartColorPalette, чтобы автоматически устанавливать для каждого ряда foreach другой цвет.

В тот момент, когда я создаю свой ряд, я хочу прочитать цвет, чтобы дать dropDownList.listItem тот же backgroundColor.Но, к сожалению, в тот самый момент Цвет все еще не установлен.

Возможно ли, что Series получает свое определение цвета из ChartColorPalette позже в событии рендеринга ASP.NET?

Или что я делаю не так?

Chart newChart = new Chart();
newChart.Palette = ChartColorPalette.Bright;

Series newSeries;

foreach (....)
{
   newSeries = new Series();
   newChart.Series.Add(newSeries);

   // no color found :(
   string colorName = newSeries.Color.Name

   // same here
   string colorName = newChart.Series[identifier].Color.Name;

   myDropDownList.Items.FindByValue(identifier).Attributes.Add("style", "background: " + colorName + ";");
}

Ответы [ 2 ]

18 голосов
/ 29 марта 2012

На сайте Dundas (исходный код кода MS-карт, который больше не доступен в сети с августа 2018 года) вы можете принудительно применить палитру вручную.

newChart.ApplyPaletteColors();
Color thisColor = newChart.Series[identifier].Color;

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

0 голосов
/ 28 марта 2012

Почему бы вам не использовать ChartColor Pallette напрямую?

foreach(string colorName in Enum.GetNames(typeof(ChartColorPallette))
{
}
...