C# System.Windows.Forms.DataVisualization Demo案例

简介

DataVisualization 其实就是Winform 中自带的 Chart 控件,整个图形控件主要由以下几个部份组成:

1.Annotations --图形注解集合

2.ChartAreas  --图表区域集合

3.Legends      --图例集合

4.Series    --图表序列集合(即图表数据对象集合)

5.Titles   --图标的标题集合

每个集合具体介绍,可以参考下面的帖子,看完了介绍,一定对你理解这个插件大有裨益。

C#(99):微软Charting图表控件 System.Web.UI.DataVisuliztion.Charting - springsnow - 博客园

一、新建一个项目

WPF 其实也可以用,写法差不了太多,这里用 Winfrom 作为演示。

引入 System.Windows.Forms.DataVisualization DLL

二、界面和代码

 下面是运行后的样子

 另外还加了一个定时器

Form1.cs

using System;
using System.Drawing;
using System.Windows.Forms;
using System.Windows.Forms.DataVisualization.Charting;

namespace WindowsFormsApplication2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private Chart chart;
        private int sum = 0;

        private void Form1_Load(object sender, EventArgs e)
        {
            InitChart();

            comboBox1.SelectedIndex = 2;

            //三条线
            //for (int i = 0; i < 3; i++)
            //{
            //    AddSeries("line", Color.Red);
            //}

            //一条线
            AddSeries("line", Color.Red);
        }

        private void InitChart()
        {
            CreateChart();
            chart.ChartAreas[0].AxisX.ScaleView.Scroll(ScrollType.Last);
            timer.Interval = 500;
        }

        private void AddSeries(string seriersName, Color serierscolor)
        {
            Series series = new Series(seriersName);
            //图表类型  设置为样条图曲线
            series.ChartType = SeriesChartType.Line;
            series.IsXValueIndexed = true;
            series.XValueType = ChartValueType.Time;
            series.MarkerStyle = MarkerStyle.Circle;
            series.MarkerColor = Color.Black;
            //设置点的大小
            series.MarkerSize = 5;
            //设置曲线的颜色
            series.Color = serierscolor;
            //设置曲线宽度
            series.BorderWidth = 2;
            series.CustomProperties = "PointWidth=2";
            series.IsValueShownAsLabel = true;
            chart.Series.Add(series);
        }


        private void CreateChart()
        {
            chart = new Chart();
            this.panel1.Controls.Add(chart);
            chart.Dock = DockStyle.Fill;
            chart.Visible = true;

            ChartArea chartArea = new ChartArea();
            //chartArea.Name = "FirstArea";

            chartArea.CursorX.IsUserEnabled = true;
            chartArea.CursorX.IsUserSelectionEnabled = true;
            chartArea.CursorX.SelectionColor = Color.SkyBlue;
            chartArea.CursorY.IsUserEnabled = true;
            chartArea.CursorY.AutoScroll = true;
            chartArea.CursorY.IsUserSelectionEnabled = true;
            chartArea.CursorY.SelectionColor = Color.SkyBlue;

            chartArea.CursorX.IntervalType = DateTimeIntervalType.Auto;
            chartArea.AxisX.ScaleView.Zoomable = false;
            chartArea.AxisX.ScrollBar.ButtonStyle = ScrollBarButtonStyles.All;//启用X轴滚动条按钮

            //chartArea.BackColor = Color.BlueViolet;                      //背景色
            chartArea.BackSecondaryColor = Color.White;                 //渐变背景色
            chartArea.BackGradientStyle = GradientStyle.TopBottom;      //渐变方式
            chartArea.BackHatchStyle = ChartHatchStyle.None;            //背景阴影
            chartArea.BorderDashStyle = ChartDashStyle.NotSet;          //边框线样式
            chartArea.BorderWidth = 1;                                  //边框宽度
            chartArea.BorderColor = Color.Black;

            chartArea.AxisX.MajorGrid.Enabled = true;
            chartArea.AxisY.MajorGrid.Enabled = true;

            // Axis
            chartArea.AxisY.Title = @"Value";
            chartArea.AxisY.LineWidth = 2;
            chartArea.AxisY.LineColor = Color.Black;
            chartArea.AxisY.Enabled = AxisEnabled.True;

            chartArea.AxisX.Title = @"Time";
            chartArea.AxisX.IsLabelAutoFit = true;
            chartArea.AxisX.LabelAutoFitMinFontSize = 5;
            chartArea.AxisX.LabelStyle.Angle = -15;

            chartArea.AxisX.LabelStyle.IsEndLabelVisible = true;        //show the last label
            chartArea.AxisX.Interval = 10;
            chartArea.AxisX.IntervalAutoMode = IntervalAutoMode.FixedCount;
            chartArea.AxisX.IntervalType = DateTimeIntervalType.NotSet;
            chartArea.AxisX.TextOrientation = TextOrientation.Auto;
            chartArea.AxisX.LineWidth = 2;
            chartArea.AxisX.LineColor = Color.Black;
            chartArea.AxisX.Enabled = AxisEnabled.True;
            chartArea.AxisX.ScaleView.MinSizeType = DateTimeIntervalType.Months;
            chartArea.AxisX.Crossing = 0;

            chartArea.Position.Height = 85;
            chartArea.Position.Width = 85;
            chartArea.Position.X = 0;
            chartArea.Position.Y = 13;

            chart.ChartAreas.Add(chartArea);
            chart.BackGradientStyle = GradientStyle.TopBottom;
            //图表的边框颜色、
            chart.BorderlineColor = Color.FromArgb(26, 59, 105);
            //图表的边框线条样式
            chart.BorderlineDashStyle = ChartDashStyle.Solid;
            //图表边框线条的宽度
            chart.BorderlineWidth = 2;
            //图表边框的皮肤
            chart.BorderSkin.SkinStyle = BorderSkinStyle.Emboss;
        }

        private void button_Stop_Click(object sender, EventArgs e)
        {
            switch (button_Stop.Text)
            {
                case "Stop":
                    {
                        button_Stop.Text = "Start";
                        timer.Stop();
                        break;
                    }
                case "Start":
                    {
                        button_Stop.Text = "Stop";
                        timer.Start();
                        break;
                    }
            }
        }

        private void timer_Tick(object sender, EventArgs e)
        {
            sum++;
            Random ra = new Random();
            DateTime nowTime = DateTime.Now;
            if (chart.Series.Count <= 0)
            {
                return;
            }

            for (int i = 0; i < chart.Series.Count; i++)
            {
                Series series = chart.Series[i];
                string value = ra.Next(1, 10).ToString();
                series.Points.AddXY(nowTime, value);

                if (comboBox1.SelectedItem.ToString() == "OverView")
                {
                    chart.ChartAreas[0].AxisX.ScaleView.Position = 1;
                    if (sum > 10)
                    {
                        double max = chart.ChartAreas[0].AxisX.Maximum;
                        max = (sum / 10 + 1) * 10;
                        chart.ChartAreas[0].AxisX.Interval = max / 10;
                    }
                    chart.ChartAreas[0].AxisX.ScaleView.Size = sum * 1.1;
                }

                if (comboBox1.SelectedItem.ToString() == "Follow")
                {
                    chart.ChartAreas[0].AxisX.Interval = 1D;
                    chart.ChartAreas[0].AxisX.ScaleView.Size = 10D;
                    if (sum <= chart.ChartAreas[0].AxisX.ScaleView.Size)
                        chart.ChartAreas[0].AxisX.ScaleView.Position = 1;
                    else
                        chart.ChartAreas[0].AxisX.ScaleView.Position = sum - chart.ChartAreas[0].AxisX.ScaleView.Size;
                }

            }
        }
    }
}

三、效果

点击 start 按钮,效果如下。

源码下载:点击跳转

end 

第一步:您从我们网站下载下来文件之后,先将其解压(一般都是zip压缩包)。 第二步:然后根据您系统的情况选择X86/X64,X86为32位电脑,X64为64位电脑。 如果您不知道是X86还是X64,您可以点此链接检测。 第三步:根据软件情况选择文件版本。此步骤比较复杂,如果是Windows的dll文件,     版本号以5.0开头的或含有 nt 一般是windows2000的文件。     版本号以5.1开头的或含有 xp、xpsp1、xpsp2、xpsp3 信息的一般是windowsXP的文件。     版本号以6.0开头的或含有 longhorn、vista 信息的一般是windowsVista的文件。     版本号以6.1开头的或含有 win7 信息的一般是windows7的文件。     版本号以6.2开头的或含有 win8 信息的一般是windows8的文件。     版本号以6.3开头的或含有 win8.1 信息的一般是windows8.1的文件。     版本号以10.0开头的或含有 win10 信息的一般是windows10的文件。     如果不是windows的dll文件,则需要灵活查看版本号、描述、网友提供的信息、以及相关dll的版本号去判断。 如果实在无法判断,则把每个版本的dll文件拷贝到对应目录(可以在我们网站上文件详细页面查看到)或 C:\Windows\System (Windows 95/98/Me), C:\WINNT\System32 (Windows NT/2000), C:\Windows\System32 (Windows XP,Vista,7) , 去尝试。 至此如果问题依旧,您可能需要使用regsvr32,方法如下: 1.单击开始,选择运行 2.输入 regsvr32 文件名.dll 并按下确认 之后会弹出注册成功信息。 另外,您还可以使用我们的修复工具进行修复。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

熊思宇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值