WPF 工具包饼图样式颜色

发布于 2024-08-24 17:48:54 字数 85 浏览 8 评论 0原文

我想在饼图中的每个饼图切片的代码隐藏中设置颜色。有人知道该怎么做吗?现在它从样式 xaml 获取颜色,但我需要自己从代码隐藏中为每个值(饼图切片)分配颜色。

i`d like to set colors in codebehind for every Pie Slice in my PieChart. Anyone knows how to do this? Now it gets the colors from the styles xaml, but i need to assign the colors for each value (pie slice) by myself from codebehind.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

沙与沫 2024-08-31 17:48:55

不确定这是否是最好的方法,但我在同样的事情上挣扎并最终让它像这样工作。

声明一个调色板:

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 中定义调色板。
希望有帮助。

Not sure if this is the best way of doing it but I struggled with the same thing and eventually got it working like this.

Declare a palette:

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

Then create a brush (or brushes) with the color information:

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

With each brush, create a new Style and add it to the palette collection:

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);

Note that each brush (or palette entry) has to be created as a new ResourceDictionary object. If you create 10 brushes and just add them all to the same ResourceDictionary the piechart will only use the first color. (Or maybe I'm just doing something wrong).

Then set the chart palette to the custom palette:

this.yourChartsName.Palette = pieSeriesPalette;

This is only useful if you want to customise the palette to specific colors. For a color range or fixed list of colors I believe you can just definie the palette in XAML.
Hope it helps.

莳間冲淡了誓言ζ 2024-08-31 17:48:55

一种可能是从 HSL 或 HSV 构建颜色,保持 SL/SV 部分固定,您可以划分整个色调范围到你拥有的饼片数量,这应该确保它们在视觉上合理分离。不同的 SL/SV 值将使图表颜色鲜艳、柔和或深色等。

One possiblitiy is to construct your colours from HSL or HSV, keeping the SL/SV part fixed you can divide the entire hue range into the number of pie slices you have, this should ensure they are reasonably visually seperated. different SL/SV values will make the chart vibrant colours or pastels or dark shades etc.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文