我想在我的PieChart中为每个Pie Slice设置代码隐藏的颜色。谁知道怎么做?现在它从样式xaml中获取颜色,但我需要自己从代码隐藏中为每个值(饼图片段)分配颜色。
答案 0 :(得分:7)
不确定这是否是做到这一点的最佳方式,但我在同样的事情上挣扎,并最终让它像这样工作。
声明一个调色板:
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);
请注意,必须将每个画笔(或调色板条目)创建为新的ResourceDictionary对象。如果您创建10个画笔并将它们全部添加到同一个ResourceDictionary,则饼图将仅使用第一种颜色。 (或者我可能只是做错了什么)。
然后将图表调色板设置为自定义调色板:
this.yourChartsName.Palette = pieSeriesPalette;
仅当您要将调色板自定义为特定颜色时,此选项才有用。对于颜色范围或固定的颜色列表,我相信您可以在XAML中定义调色板。 希望它有所帮助。
答案 1 :(得分:0)
一种可能的方法是从HSL or HSV构建您的颜色,保持SL / SV部分固定,您可以将整个色调范围划分为您拥有的饼图数量,这应该确保它们在视觉上合理分离。不同的SL / SV值会使图表生动的颜色或粉彩或深色调等。