C# WPF Chart设置

// area样式设置
            AREA.AxisX.Enabled = AxisEnabled.True;                          // 使X轴可用
            AREA.AxisX.IntervalAutoMode = IntervalAutoMode.VariableCount;   // X 轴标签数量,由显示的数据点数量自动调整
            AREA.AxisY.Enabled = AxisEnabled.True;
            AREA.AxisY.MajorTickMark.Enabled = true;

            AREA.CursorX.IntervalType = DateTimeIntervalType.Auto;
            AREA.CursorX.IsUserSelectionEnabled = true;                     // 鼠标选择区域放大
            AREA.CursorX.SelectionColor = Color.SkyBlue;
            AREA.CursorY.AutoScroll = true;
            AREA.AxisX.ScrollBar.ButtonStyle = ScrollBarButtonStyles.All; //启用X轴滚动条按钮
            //调色
            AREA.BackColor = Color.AliceBlue;                //背景色
            AREA.BackSecondaryColor = Color.White;           //渐变背景色
            AREA.BackGradientStyle = GradientStyle.TopBottom;               //渐变方式
            AREA.BackHatchStyle = ChartHatchStyle.None;                     //背景阴影
            AREA.BorderDashStyle = ChartDashStyle.NotSet;                   //边框线样式
            AREA.BorderWidth = 1;                                           //边框宽度

            AREA.AxisY.MajorGrid.Enabled = true;
            AREA.AxisX.MajorGrid.Enabled = false;
            AREA.AxisX.Title = @"Time";
            AREA.AxisY.Title = @"Value";
            AREA.AxisY.LabelAutoFitMinFontSize = 5;

            // series设置
            SERIES1.ChartArea = "Line";
            SERIES2.ChartArea = "Line";

            SERIES1.ChartType = SeriesChartType.Spline;                // 曲线图
            SERIES2.ChartType = SeriesChartType.Spline;                // 曲线图
            SERIES1.Name = "温度Top";
            SERIES2.Name = "温度Bottom";
            SERIES1.ToolTip = "Top:\n#VALY";                         // 鼠标悬浮在点上面显示提示(不够灵敏)
            SERIES2.ToolTip = "Bottom:\n#VALY";                      // 鼠标悬浮在点上面显示提示(不够灵敏)
            SERIES1.BorderWidth = 2;
            SERIES2.BorderWidth = 2;
            SERIES1.BackSecondaryColor = Color.Gray;
            SERIES2.BackSecondaryColor = Color.Gray;
            SERIES1.Color = Color.Red;
            SERIES2.Color = Color.Yellow;
            //Marker点
            SERIES1.MarkerStyle = MarkerStyle.Square;
            SERIES2.MarkerStyle = MarkerStyle.Square;
            SERIES1.MarkerSize = 5;
            SERIES2.MarkerSize = 5;

            // legend图例设置1
            LEGEND1.Alignment = StringAlignment.Near;         // legend靠近显示,不然太占用地方了
            LEGEND1.Docking = Docking.Left;                                  // 靠左显示
            LEGEND1.DockedToChartArea = "Line";                              // 默认图例是显示在图的外面,占用地方
            LEGEND1.IsDockedInsideChartArea = true;                          // 将图例放在图里面
            LEGEND1.BackColor = Color.Transparent;            // 无背景色,不然会挡住折线

            // legend图例设置2
            LEGEND2.Alignment = StringAlignment.Near;         // legend靠近显示,不然太占用地方了
            LEGEND2.Docking = Docking.Left;                                  // 靠左显示
            LEGEND2.DockedToChartArea = "Line";                              // 默认图例是显示在图的外面,占用地方
            LEGEND2.IsDockedInsideChartArea = true;                          // 将图例放在图里面
            LEGEND2.BackColor = Color.Transparent;            // 无背景色,不然会挡住折线    

            // 添加area series legend
            ChartPlot.ChartAreas.Add(AREA);
            ChartPlot.Series.Add(SERIES1);
            ChartPlot.Series.Add(SERIES2);
            ChartPlot.Legends.Add(LEGEND1);// timer设置
            ChartPlot.Legends.Add(LEGEND2);// timer设置
            //ChartPlot.BorderlineColor = Color.FromArgb(26, 59, 105);
            timer.Enabled = false;
            timer.Interval = INTERVAL;
            timer.Elapsed += Timer_Elapsed;

            随动标签
            //textData = new TextBox();
            //textData.Height = 30;
            //textData.HorizontalAlignment = HorizontalAlignment.Left;
            //textData.VerticalAlignment = VerticalAlignment.Bottom;

            //新建列表
            dataTable = new DataTable(); // 初始化 DataTable 对象
            // 添加列到 DataTable
            dataTable.Columns.Add("Time", typeof(string));
            dataTable.Columns.Add("Temp1", typeof(int));
            dataTable.Columns.Add("Temp2", typeof(int));

之前三此发的库http://download.csdn.net/detail/maiker/9621027可以作废,本次为最新的,其中测试了历史曲线的动态显示,这是对Microsoft WpfToolkit的更新和扩展: 1、将库版本升级到.NET 4.6.1,对命名控件进行了替换处理 2、实现了单数据Chart图的混合颜色显示,可通过修改资源字典调整和添加颜色 3、可控制各种Chart图形的数据值显示 4、坐标轴文本可倾斜显示 5、添加了StepLine图和圆环图,圆环半径比例系数可设定,同时添加了饼图的半径比系数,这样可以更好的控制饼图的标签显示,避免重叠 6、Legend可位于区域四侧,对齐方式也可以设定,以及是否显示, 可控制Chart Title是否显示 7、柱状图缝隙间隔可调整 8、全方面的加入了各种加载动画效果,动画效果可屏蔽,同时原系统自带动画效果,可叠加,这是两种不同的效果,可以互补性的单个使用 9、设计了四种主题颜色,各人可以针对图形颜色和背景色进行更好的搭配,在用户项目中,可以自己添加新的主题。 10、扩展了时间轴的应用,在新的DateTimeChart中可以通过鼠标平移和缩放时间轴,并测试了两个例子用于动态显示历史曲线,一个是外部定时更新,一个是内部定时更新 11、对LineDataPoint样式进行了设计,现在可以选择线图的点样式(如空心圆、五角星、三角形,矩形等),同时这些不同的点样式可以体现在Legend上,从而实现颜色和图形的双重区分。 总而言之,微软的控件库做得很标准,还是很好修改的。 最后一直想在历史曲线中取消点动画(及默认的透明度动画),以便提高执行效率,但微软的那部分动画不熟,总是修改失败。 可以发邮件wuyang26@live.cn讨论。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值