第一篇:C#之Legend学习

    技术2024-07-29  89

    第一次写博客,分享一些今天我在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的地方,请多多指出,谢谢大家,祝您暴富!

    Processed: 0.011, SQL: 9