Search code examples
asp.netchartsasp.net-charts

Find colour assigned to point in ASP.NET pie chart when using Palettes


I've got a basic ASP.NET Charting control set to a pie chart, using the "Bright Pastel" palette and I'd like to link the colours used in the chart to a gridview elsewhere on the page (which is effectively acting as a legend, but will have some more fields in too, once I've got this working).

I can't find anywhere in the control where it references the actual colours used in each section of the pie, all of the BackgroundColor properties are 0. I could manually assign the colours, but it'll really complicate things if I have to do that.

Screenshot if it helps visualise what I'm trying to do:


Solution

  • Once you have set your series, you can call the method chart1.ApplyPaletteColors() and then check the series[].Color property to determine the color.

    chart1.Series.Clear();
    chart1.Series.Add(new Series());
    chart1.Series.Add(new Series());
    
    Color series1Color = chart1.Series[0].Color;  
    // Above (Series 1) currently holds {Color [Empty]} || {Name=0, ARGB={0,0,0,0}}
    Color series2Color = chart1.Series[1].Color;  
    // Above (Series 2) currently holds {Color [Empty]} || {Name=0, ARGB={0,0,0,0}}
    
    chart1.ApplyPaletteColors();
    
    Color series1AfterColor = chart1.Series[0].Color; 
    // Above (Series 1) now holds {Color [A=255, R=65, G=140, B=240]}
    
    Color series2AfterColor = chart1.Series[1].Color; 
    // Above (Series 2) now holds {Color [A=255, R=252, G=180, B=65]}
    

    These colors will vary depending on the color palette you have set.

    To see what color palettes you can set, you can see Alex Gorev's Weblog.

    From Alexs Blog
    (source: msdn.com)

    Source - Alex's blog

    He has very helpful posts on .NET charting and I have consulted his blog often, usually from searching for answers to charting questions on google http://blogs.msdn.com/b/alexgor/

    Let me know if this does not answer your question enough to complete your task and I will elaborate on any area you ask that I am capable.