在winform中绘图

这篇具有很好参考价值的文章主要介绍了在winform中绘图。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

今天跟大家分享一下最近做的一个程序中绘图功能的实现。

先来看看实现的效果:

具体实现

页面的设计

绘图设置页面的设计如下所示:

4个label控件,控件如下所示:

2个DateEdit控件,控件如下所示:

1个ComboBoxEdit控件,控件如下所示:

1个CheckedListBoxControl控件,控件如下所示:

1个SimpleButton控件,控件如下所示:

绘图展示的页面设计如下:

只有一个ChartControl控件,控件如下所示:

代码

绘图的数据是之前文章提过的使用C#实现爬虫获取网页数据得到的数据,如下所示:

这些数据中只用了最低温度、最高温度、最低能见度、最高能见度来绘图。

第一步实现加载窗体时获取ComboBoxEdit与CheckedListBoxControl中的内容:

 public void init()
{
    // 为下拉框框赋值
    var comboBoxItems = db.Queryable<WeatherData>().Select(x => x.StationName).Distinct().ToList();
    comboBoxEdit1.Properties.Items.AddRange(comboBoxItems);
    comboBoxEdit2.Properties.Items.AddRange(comboBoxItems);

    // 多选框的设置
    checkedListBoxControl1.CheckOnClick = true; // 设置为单击即选中或取消选中

    // 多选框中的值
    string[] indexs = { "最低温度(℃)", "最高温度(℃)", "最低可见度(km)", "最高可见度(km)" };
    // 多选框添加项
    var checkedItems = new List<CheckedListBoxItem>();
    foreach (var index in indexs)
    {
        var checkedItem = new CheckedListBoxItem();
        checkedItem.Value = index;
        checkedItems.Add(checkedItem);
    }
    checkedListBoxControl1.Items.AddRange(checkedItems.ToArray());

}
private void ToolbarForm1_Load(object sender, EventArgs e)
{
    init();
}

获取不同的站名:

 var comboBoxItems = db.Queryable<WeatherData>()
                      .Select(x => x.StationName).Distinct().ToList();

为下拉框添加值:

  comboBoxEdit1.Properties.Items.AddRange(comboBoxItems);

为多选框添加值:

     // 多选框的设置
    checkedListBoxControl1.CheckOnClick = true; // 设置为单击即选中或取消选中

    // 多选框中的值
    string[] indexs = { "最低温度(℃)", "最高温度(℃)", "最低可见度(km)", "最高可见度(km)" };
    // 多选框添加项
    var checkedItems = new List<CheckedListBoxItem>();
    foreach (var index in indexs)
    {
        var checkedItem = new CheckedListBoxItem();
        checkedItem.Value = index;
        checkedItems.Add(checkedItem);
    }
    checkedListBoxControl1.Items.AddRange(checkedItems.ToArray());

开始绘图按钮的点击事件代码:文章来源地址https://www.toymoban.com/news/detail-747863.html

 private void simpleButton3_Click(object sender, EventArgs e)
{
    var date1 = dateEdit3.EditValue;
    var date2 = dateEdit4.EditValue;
    var name = comboBoxEdit2.Text;
    var checkedItems = checkedListBoxControl1.CheckedItems;
    if (date1 != null && date2 != null && name != "" && checkedItems.Count != 0)
    {
        var startDate = Convert.ToDateTime(date1);
        var endDate = Convert.ToDateTime(date2);
        var list = db.Queryable<WeatherData>().Where(x => x.Date >= startDate && x.Date < endDate.AddDays(1) && x.StationName == name).ToList();
        // 清空之前的图
        if (chartControl2.Series.Count > 0)
        {
            chartControl2.Series.Clear();
        }
        // 选中几个指标就画几个图
        foreach (CheckedListBoxItem item in checkedItems)
        {
            var indexKey = item.Value.ToString();
            switch (indexKey)
            {
                case "最低温度(℃)":
                    Series series1 = new Series("最低温度(℃)", ViewType.Line);
                    foreach (var dataPoint in list)
                    {
                        series1.Points.Add(new SeriesPoint(dataPoint.Date, dataPoint.Tem_Low));

                    }
                    chartControl2.Series.Add(series1);
                    break;
                case "最高温度(℃)":
                    Series series2 = new Series("最高温度(℃)", ViewType.Line);
                    foreach (var dataPoint in list)
                    {
                        series2.Points.Add(new SeriesPoint(dataPoint.Date, dataPoint.Tem_High));

                    }
                    chartControl2.Series.Add(series2);
                    break;
                case "最低可见度(km)":
                    Series series3 = new Series("最低可见度(km)", ViewType.Line);
                    foreach (var dataPoint in list)
                    {
                        series3.Points.Add(new SeriesPoint(dataPoint.Date, dataPoint.Visibility_Low));

                    }
                    chartControl2.Series.Add(series3);

到了这里,关于在winform中绘图的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 做程序员累了想要转行?我想给大家分享一下看法

    今天早上起床时,我看到有粉丝评论说关于程序员的话题,如果做着觉得累了,就会觉得自己不适合这个工作,想转行。我想给大家分享一下我的看法。 在我刚开始工作时,有人说我不适合做这个工作,但是我坚持了下来,做了3年。一开始,我学习的专业技术上还可以,但

    2023年04月19日
    浏览(45)
  • 作为一名普通的java程序员,我想和大家分享一下4年来的工作内容

    我是16届毕业生,我的第一份工作是做外包,第一年的时间里测试偏多,比如用Excel文档生成测试代码进行单元测试,也会写一些简单的增删改查,以及用shell处理数据,还有一些纯测试的工作,比如点页面啊截图。到了第二年,开发的工作也变得多了一些,但大部分还是增删

    2024年02月05日
    浏览(53)
  • 分享一个500页面给大家

    先看效果: 再看代码:

    2024年02月06日
    浏览(53)
  • 分享一个403界面给大家

    先看效果图(说明:小鬼影会飘来飘去,长时间停留会有小惊喜,具体大家跑一下就知道): 代码如下: PS:发现我用文字写太生硬了,干的噎嗓子,干脆在代码里加注释了。

    2024年02月06日
    浏览(45)
  • 分享一下怎么做一个同城配送小程序

    如何制作一个同城配送小程序:功能特点、使用指南及未来展望 一、引言 随着互联网的快速发展,人们对于生活服务的需求越来越高。同城配送作为连接消费者与商家的桥梁,越来越受到人们的关注。本文将详细介绍如何制作一个同城配送小程序,包括其功能特点、使用指

    2024年02月07日
    浏览(42)
  • 今天给大家带来Python炫酷爱心代码

    前言: 这个是小编之前朋友一直要小编去做的,不过之前技术不够所以一直拖欠今天也完成之前的约定吧! 至于他是谁,我就不多说了直接上代码 如果有需要的话,可以联系小编噢!

    2024年02月05日
    浏览(50)
  • 初学51单片机(STC89C52)一个倒计时显示器和大家分享

      想要实现倒计时显示器,首先得确定从哪个时间开始倒计时,这就需要写出一个计数的程序来,通过按键来控制需要的数,从而开始倒计时。我的开发板上用的Key2,Key3,Key4,Key5这四个键,分别对应着加1,减1,乘2,开始计时四个功能。   通过加一,减一,乘2三个操作,

    2024年02月10日
    浏览(59)
  • 今天跟大家推荐几款实用的ai写作生成器

    自ai技术的发展以来,人工智能在各个领域都展现出了无限可能。在学术界,写作论文是科研人员不可避免的重要任务,然而,论文写作需要大量的时间和经验技能,而这对刚刚步入学术领域的年轻科研人员来说尤为困难。在这样的背景下,提高写作效率、降低人力成本、缩

    2024年02月13日
    浏览(45)
  • 今天教大家微信小程序怎么免300元认证费终身使用的教程

    众所周知微信小程序认证需要300元认证费,当然用已认证的微信公众号可以免费认证但是认证微信公众号也需要300认证费而且需要每年进行年检等于每年都要花300元。 不知道大家注册小程序的时候有没有发现审核很慢申请完需要等几天很费时间, 而且微信限制一个身份证只

    2024年02月08日
    浏览(58)
  • 今天给大家介绍一篇基于springboot的医院管理系统的设计与实现

    临近学期结束,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下,你想解决的问题,今天给大家介绍一篇基于springboot的医院管理系统的设计与实现。 随着科

    2023年04月14日
    浏览(79)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包