第一次写博客,分享一些今天我在legend上的遇到的小坑
今天我在做上位机的时候,想要加一些图例,来区分实时图形中的折线代表的意义,开始我按照各种办法来调试(写代码、调属性)Legend,都无法显示出来。然后我又回到最初的起点,从可拖拽界面那去寻找Legend的奥秘,最后发现是我把legend的属性Enable设置成了False,导致一直无法显示图例。
具体查找方式为
首先点开我们要画图的chart的属性部分,找到Legend。
进入到Legend的编辑区,将外观的Enable属性改为True。此属性代表着图例可见不可见。
就可以了。
就很简单的一个部分,我各种改代码,各种试,浪费了好几个小时。害,还是怪自己不熟练啊。
下面说说怎么改Legend的颜色以及文字吧。我做的是折线图的图例,只需要写出来每个颜色线代表什么意思就可以。不用加实时数据。
在刚开始没有加载出来数据时,图例会显示一个颜色。如下图。
此时的颜色取决于窗体设计器生成的关于Series代码,series1.Color = System.Drawing.Color.Red;
在数据未加载出来之前显示。
当数据加载出来了,此时图例颜色完全与设定曲线的颜色一致。但是问题是,如果legend前后颜色不一样,就会出现一个变化的过程就很别扭。所以就可以把窗体自动生成代码里的颜色改成与.cs文件里设定的Series颜色一致,如果在.designer.cs文件里没有相应series颜色的代码可以自己添一行。
series1.BorderWidth = 2;
series1.ChartArea = "ChartArea1";
series1.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Spline;
series1.Color = System.Drawing.Color.Red;
series1.LabelBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
series1.Legend = "Legend1";
series1.MarkerSize = 1;
series1.Name = "从机1";
series2.ChartArea = "ChartArea1";
series2.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Spline;
series2.IsValueShownAsLabel = true;
series2.Legend = "Legend1";
series2.MarkerSize = 1;
series2.Name = "从机2";
series3.ChartArea = "ChartArea1";
series2没有颜色设置, 可以加一句:series2.Color = System.Drawing.Color.Black;
与后面再次定义的的series2保持一致。
.cs文件中出现的是:
System.Windows.Forms.DataVisualization.Charting.Series series2 = new System.Windows.Forms.DataVisualization.Charting.Series()
{
ChartType = SeriesChartType.Spline,
BorderWidth = 1,
IsValueShownAsLabel = true,
ShadowOffset = 1,
Color = Color.Black,
LegendText = "从机2"
};
最后来说一下,怎么更改legend的文字。在此legend所对应的seriel的属性设置里,加入
LegendText = "从机1"
就可以用legend描述曲线代表意义了。
第一次写文章,感觉写博客好有意义,可以帮助自己把所有东西梳理一遍,加深理解。Nice!
有bug的地方,请多多指出,谢谢大家,祝您暴富!