C#窗体应用中使用ZedGraph曲线插件绘制图表

场景

ZedGraph

ZedGraph 是一个开源的.NET图表类库, 全部代码都是用C#开发的。它可以利用任意的数据集合创建2D的线性和柱形图表。

控件下载

https://download.csdn.net/download/badao_liumang_qizhi/11578445

英文手册下载

https://download.csdn.net/download/badao_liumang_qizhi/11578491

示例源码下载

https://download.csdn.net/download/badao_liumang_qizhi/11578558

效果

 

实现

VS2013新建项目-Windows窗体程序。

然后在窗体设计页面,打开工具箱(ctrl+alt+x)。

将上面下载的控件(以.dll结尾的)拖拽到工具箱中。

 

然后调整其大小使其充满整个form。

打开Form1.cs进入代码的编写。

在Form初始化后编写createPane,传递的参数是ZedGraph控件对象。

 public Form1()
        {
            InitializeComponent();
            //Form1初始化后创建设置控件的方法并将当前ZedGraph控件传递
            createPane(zedGraphControl1);
        }

然后在方法createPane中。

//需要引入命名空间--using ZedGraph;
        public void createPane(ZedGraphControl zgc)
        {
            GraphPane myPane = zgc.GraphPane;

            //设置图表标题 和 x y 轴标题
            myPane.Title.Text = "霸道测试标题";

            myPane.XAxis.Title.Text = "X轴标题";

            myPane.YAxis.Title.Text = "Y轴标题";

            //更改标题的字体

            FontSpec myFont = new FontSpec("Arial",20,Color.Red,false,false,false);

            myPane.Title.FontSpec = myFont;

            myPane.XAxis.Title.FontSpec = myFont;

            myPane.YAxis.Title.FontSpec = myFont;

            // 造一些数据,PointPairList里有数据对x,y的数组

            Random y = new Random();

            PointPairList list1 = new PointPairList();

            for (int i = 0; i < 36; i++)
            {

                double x = i;

                //double y1 = 1.5 + Math.Sin((double)i * 0.2);

                double y1 = y.NextDouble() * 1000;

                list1.Add(x, y1); //添加一组数据

            }

            // 用list1生产一条曲线,标注是“曲线1”

            LineItem myCurve = myPane.AddCurve("曲线1", list1, Color.Red, SymbolType.Star);

            //填充图表颜色

            myPane.Fill = new Fill(Color.White, Color.FromArgb(200, 200, 255), 45.0f);

            //以上生成的图标X轴为数字,下面将转换为日期的文本

            string[] labels = new string[36];

            for (int i = 0; i < 36; i++)
            {

                labels[i] = System.DateTime.Now.AddDays(i).ToShortDateString();

            }

            myPane.XAxis.Scale.TextLabels = labels; //X轴文本取值

            myPane.XAxis.Type = AxisType.Text;   //X轴类型

            //画到zedGraphControl1控件中,此句必加

            zgc.AxisChange();//在数据变化时绘图

            //更新图表

            zedGraphControl1.Invalidate();

            //重绘控件

            Refresh();
        }

详细见注释,运行项目。

 

  • 3
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要在C#使用ZedGraph实时绘制数据曲线,你可以使用定时器或者后台线程来更新数据,并动态地将新数据添加到图表。下面是一个简单的示例代码,展示了如何实现实时数据曲线绘制: ```csharp using System; using System.Drawing; using System.Windows.Forms; using ZedGraph; namespace RealTimeGraph { public partial class Form1 : Form { private ZedGraphControl zedGraphControl1; private GraphPane graphPane; private RollingPointPairList dataPoints; private LineItem curve; private double xAxisValue = 0; private Timer timer; public Form1() { InitializeComponent(); // 创建ZedGraph控件 zedGraphControl1 = new ZedGraphControl(); zedGraphControl1.Dock = DockStyle.Fill; this.Controls.Add(zedGraphControl1); // 创建图表对象 graphPane = zedGraphControl1.GraphPane; // 设置图表的标题 graphPane.Title.Text = "实时数据曲线示例"; // 设置X轴和Y轴的标签 graphPane.XAxis.Title.Text = "时间"; graphPane.YAxis.Title.Text = "数据值"; // 创建数据点列表 dataPoints = new RollingPointPairList(1000); // 创建曲线对象 curve = graphPane.AddCurve("曲线名称", dataPoints, Color.Blue, SymbolType.None); // 创建定时器 timer = new Timer(); timer.Interval = 1000; // 每隔1秒更新一次数据 timer.Tick += Timer_Tick; } private void Form1_Load(object sender, EventArgs e) { // 启动定时器 timer.Start(); } private void Timer_Tick(object sender, EventArgs e) { // 更新数据 double newData = GetNewData(); // 添加新数据点 dataPoints.Add(xAxisValue, newData); xAxisValue += 1; // 刷新图表 zedGraphControl1.AxisChange(); zedGraphControl1.Invalidate(); } private double GetNewData() { // 这里可以根据你的需求获取新的数据值,这里仅作示例,使用随机数生成 Random random = new Random(); return random.Next(1, 10); } } } ``` 在这个示例,我们创建了一个窗体,并将ZedGraph控件添加到窗体上。在窗体加载事件启动定时器,并在定时器的Tick事件更新数据并刷新图表。 每次定时器触发时,我们通过`GetNewData()`方法获取新的数据值,并将其添加到数据点列表。然后,通过调用`AxisChange()`方法和`Invalidate()`方法来刷新图表。 你可以根据自己的需求调整定时器的间隔和数据获取的逻辑。希望这个示例对你有所帮助!如果还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

霸道流氓气质

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

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

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

打赏作者

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

抵扣说明:

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

余额充值