2012-03-28 40 views
4

我有一個圖表與多個系列。我使用ChartColorPalette自動設置不同的顏色。如何在運行時使用ChartColorPalette讀取Series.Color?

在那一刻,當我創建我的系列時,我想要讀取顏色給dropDownList.listItem相同的backgroundColor。但不幸的是,在那一刻,顏色仍然沒有設置。

以後在ASP.NET的渲染事件中,系列是否有可能將ChartColorPalette中的顏色定義取出?

或我在做什麼錯?

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 + ";"); 
} 
+0

它不應該在你的代碼newSeries而不是Newseries? – Quantbuff 2012-03-28 15:44:52

+0

是的,它應該。我修好了它。 – Zahnfee 2012-03-29 11:32:30

回答

17

從Dundas站點(MS圖表代碼的原始源),您可以強制它手動應用調色板。

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

我想你將需要申請調色板,並得到了顏色來填充下拉後通過他們添加的所有系列中的第一個,然後循環。

Dundas - How to retrieve colors from the chart color palette

+0

非常感謝!那正是我正在尋找的=) – Zahnfee 2012-03-29 11:56:18

+0

救了我一命!謝謝! – hansioux 2013-03-25 08:28:11

0

爲什麼不直接使用ChartColor Pallette?

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

通過這個,你可以得到'ChartColorPalette'枚舉的值,與顏色無關 – V4Vendetta 2012-03-29 06:54:32

+0

Yap,我只獲取調色板的名稱而不是每種顏色的顏色。我不確定這是否可能。但即使如此,我認爲這不會是一個乾淨的解決方案。 – Zahnfee 2012-03-29 11:35:35

相關問題