WPF中使用Chart控件

本文介绍了在Visual Studio 2013.NET Framework 4.5环境下,如何使用Chart控件而非LiveChart来展示大数据量的图表。通过设置ChartArea、Series、ChartType和Legend等属性,创建并展示了三条折线图,分别对应X、Y、Z轴值。在处理大数据时,由于LiveChart内存消耗大,选择Chart控件能有效优化内存使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在项目中用到了Chart控件,没有使用LiveChart,因为数据量很大,LiveChart太占内存了。

本项目使用的是VS2013 .NETFramework4.5

Chart控件的所在库是:System.Windows.Forms.DataVisualization.dll

需要自行添加该库的引用

        /// <summary>
        /// 设置曲线
        /// </summary>
        /// <param name="dt1">数据来源</param>
        /// <param name="chart1">控件</param>
        private void SetChart(DataTable dt1, Chart chart1)
        {
            try
            {
                chart1.ChartAreas.Clear();
                ChartArea chartArea1 = new ChartArea("X");//定义曲线所在区域
                chartArea1.AxisX.Interval = dt1.Rows.Count / 10;//设置曲线X轴的间隔
                chart1.ChartAreas.Add(chartArea1);
                chart1.Series.Clear();
                Series series1 = new Series();//设置图表中的折线或支持的图表的对象
                series1.ChartArea = "X";//图表所属的区域
                chart1.Series.Add(series1);//添加点位1
                chart1.Series[0].ChartType = SeriesChartType.Spline;//设置图表的显示方式,我用的是折现图
                chart1.Series[0].LegendText = "X轴值";//图例说明

                Series serices2 = new Series();//第2条折线
                serices2.ChartArea = "X";
                chart1.Series.Add(serices2);
                chart1.Series[1].ChartType = SeriesChartType.Line;
                chart1.Series[1].LegendText = "Y轴值";

                Series serices3 = new Series();//第3条折线
                serices3.ChartArea = "X";
                chart1.Series.Add(serices3);
                chart1.Series[2].ChartType = SeriesChartType.Line;
                chart1.Series[2].LegendText = "Z轴值";

                Legend legend1 = new Legend();//添加图例类,如果不添加此类是不会显示图例的
                legend1.Docking = Docking.Left;//图例显示的位置
                chart1.Legends.Add(legend1);//添加图例

                for (int i = 0; i < dt1.Rows.Count; i++)
                {
                    chart1.Series[0].Points.AddXY(dt1.Rows[i]["Time"].ToString(), double.Parse(dt1.Rows[i]["XValue"].ToString()));//第一条折线绑定X轴和Y轴的数据
                    chart1.Series[1].Points.AddXY(dt1.Rows[i]["Time"].ToString(), double.Parse(dt1.Rows[i]["YValue"].ToString()));//第二条折线绑定X轴和Y轴的数据
                    chart1.Series[2].Points.AddXY(dt1.Rows[i]["Time"].ToString(), double.Parse(dt1.Rows[i]["RawValue"].ToString()));//第三条折线绑定X轴和Y轴的数据
                }
            }
            catch (Exception ex)
            {
                System.Windows.MessageBox.Show("错误信息:" + ex.Message);
            }
        }

WPF界面设置

 

 

 效果图

 

之前三此发的库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讨论。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值