【发布时间】:2019-07-29 17:06:37
【问题描述】:
问:有什么方法可以返回自动分配给系列的线条颜色,如折线图所示?
当在C# (.NET 4.6.1) 表格折线图中绘制Series 并且未使用Chart1.Series["x"].Color 将颜色明确分配给系列时,默认颜色会自动分配到某处。你如何返回这个颜色?
我在这里使用红色来区分最初的第一个系列默认颜色和我指定的颜色。橙色看看我是否有错误的财产。
我用简化的图表重构了这个问题。
我已经测试了BorderColor 属性,因为BorderWidth 是折线图的线宽,但使用Color 属性实际上是在代码中设置了不同的线条颜色。所以,我假设正确的属性是Color。
如果我使用Series["x"].Color = Color.Red; 设置颜色,那么Series["x"].Color 返回红色,图表上线条的颜色也是红色。
我已经使用一个花哨的按钮将请求与创建分开,以确保在绘制图表之前发生的颜色请求不是问题。
我的假设是 Chart 将其分配到系列的属性之外,这可能是因为 Series.Colour 是 [Empty]。为什么是图表?因为自动分配的颜色蓝色、橙色等以相同的顺序出现,并按此顺序分配给系列,而与 ChartArea 无关。第一个添加的系列总是蓝色的,第二个橙色的等等。
int[] seriesData = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int[] seriesX = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 };
private void button1_Click(object sender, EventArgs e)
{
chart1.ChartAreas.Clear();
chart1.Series.Clear();
chart1.ChartAreas.Add("Area1");
//chart1.ChartAreas["Area1"].CursorX.Interval = 1;
Series series = new Series("Data");
chart1.Series.Add("Data");
chart1.Series["Data"].ChartType = SeriesChartType.Line;
chart1.Series["Data"].BorderWidth = 2;
//chart1.Series["Data"].BorderColor = Color.Red;
//chart1.Series["Data"].Color = Color.Orange;
chart1.Series["Data"].Points.DataBindXY(seriesX, seriesData);
}
private void Btn_GetColour_Click(object sender, EventArgs e)
{
MessageBox.Show("Series Colours\r\nBorder Colour: " + chart1.Series["Data"].BorderColor + "\r\nColor: " + chart1.Series["Data"].Color);
}
当未明确设置 Chart1.Series["x"].Color 并使用自动分配的颜色时,Chart1.Series["x"].Color 不会返回图表上显示的颜色。相反,它返回 [Empty]。
期待某种蓝色。
【问题讨论】:
标签: c# forms charts colors line