2010-03-11 77 views
1

我想为我的PieChart中的每个Pie Slice设置代码隐藏颜色。任何人都知道如何做到这一点?现在它从样式xaml中获取颜色,但是我需要从代码隐藏中为每个值(饼图片)分配颜色。WPF工具包饼图风格颜色

回答

0

一个可能性是从HSL or HSV构建你的颜色,保持SL/SV部分不变,你可以将整个色调范围划分成你有的馅饼片数量,这应该确保它们在视觉上是相当分离的。不同的SL/SV值将使图表鲜明的颜色或粉彩或深色调等。

6

不知道这是否是最好的方式,但我努力争取同样的东西,最终得到了这样的工作。

声明一个调色板:

System.Windows.Controls.DataVisualization.ResourceDictionaryCollection pieSeriesPalette = new System.Windows.Controls.DataVisualization.ResourceDictionaryCollection(); 

然后创建一个刷(或刷)与颜色信息:

Brush currentBrush = new SolidColorBrush(Color.FromRgb(128, 128, 128)); //Grey 

随着每个刷子,创建一个新的样式,并将其添加到调色板集:

System.Windows.ResourceDictionary pieDataPointStyles = new ResourceDictionary(); 
Style stylePie = new Style(typeof(PieDataPoint)); 
stylePie.Setters.Add(new Setter(PieDataPoint.BackgroundProperty, currentBrush)); 
pieDataPointStyles.Add("DataPointStyle", stylePie); 
pieSeriesPalette.Add(pieDataPointStyles); 

请注意,必须将每个画笔(或调色板条目)创建为新的ResourceDiction ary对象。如果您创建10个画笔并将它们全部添加到相同的ResourceDictionary中,则该饼图将只使用第一种颜色。 (或者,也许我只是做错了什么)。

然后设置图表调色板的自定义调色板:

this.yourChartsName.Palette = pieSeriesPalette; 

如果你想定制调色板特定颜色这是唯一有用的。对于颜色范围或固定的颜色列表,我相信您可以在XAML中定义调色板。 希望它有帮助。