• ZEDGRAPH画图心得,SQL语句构造!!!


     1   /// <summary>
     2         /// 画折线
     3         /// </summary>
     4         public void Drawline()
     5         {
     6 
     7 
     8                 OleDbConnection odcConnection = new OleDbConnection(MyConnectionString); //打开连接 C#操作Access之按列读取mdb   
     9                 odcConnection.Open();
    10                 OleDbCommand odCommandValue = odcConnection.CreateCommand();//value
    11                 OleDbCommand odCommandYear = odcConnection.CreateCommand();//year
    12 
    13                 //!!!!!!!关键查询语句!!!!!!!!!!! 
    14                 odCommandYear.CommandText = "select 年 from 洱海各月出流流量 order by 年 asc"; //读取year,按照升序排序
    15                 odCommandValue.CommandText = "select 全年平均 from 洱海各月出流流量  order by 年 asc ";
    16                 //读取-全年平均-项,并起按照年升序排序,解决了画图时“年份”和“全年平均”不匹配的问题,
    17 
    18                 OleDbDataReader odrReaderValue = odCommandValue.ExecuteReader();//建立SQL查询value
    19                 OleDbDataReader odrReaderYear = odCommandYear.ExecuteReader();//建立SQL查询year
    20 
    21                 double[] ArrValue;//数组定义
    22                 ArrValue = new double[100];//初始化大小,分配内存
    23                 double[] ArrYear;//数组定义
    24                 ArrYear = new double[100];
    25                 int im = 0, jm = 0;
    26                 while (odrReaderValue.Read())
    27                 {
    28                     //读取列的每一个
    29                     ArrValue[im] = Convert.ToDouble(odrReaderValue["全年平均"]);
    30                     im++;
    31                 }
    32                 while (odrReaderYear.Read())
    33                 {
    34 
    35                     ArrYear[jm] = Convert.ToDouble(odrReaderYear[""]);//读取列的每一个
    36                     jm++;
    37                 }
    38 
    39                 odrReaderValue.Close();
    40                 odrReaderYear.Close();
    41                 odcConnection.Close();
    42 
    43 
    44                 int leng = ArrValue.Length;
    45 
    46                 GraphPane MyPane = zedGraphControl1.GraphPane;
    47                 MyPane.Title.Text = "洱海年平均出流流量";
    48                 MyPane.XAxis.Title.Text = "年份";
    49                 MyPane.YAxis.Title.Text = "流量(立方米每秒)";
    50 
    51                 PointPairList pplist = new PointPairList();//显示点数组
    52                 for (int i = 0; i < leng; i++)
    53                 {
    54 
    55                     pplist.Add(ArrYear[i], ArrValue[i]);//xaile是年,yaile是年平均流量值
    56                 }
    57 
    58                 //画图
    59                 LineItem myCurve = MyPane.AddCurve("平均流量", pplist, Color.Red, SymbolType.Diamond);//标注样式
    60 
    61                 myCurve.Symbol.Fill = new Fill(Color.White);//背景填充白色
    62                 MyPane.XAxis.MajorGrid.IsVisible = true;//显示X网格
    63                 MyPane.YAxis.MajorGrid.IsZeroLine = true;//Y坐标不显示0坐标线
    64                 //MyPane.YAxis.MajorGrid.IsZeroLine = false;//Y坐标不显示0坐标线
    65 
    66                 // Align the Y axis labels so they are flush to the axis
    67                 MyPane.YAxis.Scale.Align = AlignP.Inside;
    68 
    69                 //坐标范围划定
    70                 MyPane.YAxis.Scale.Min = -20;
    71                 MyPane.YAxis.Scale.Max = 68;
    72 
    73                 MyPane.XAxis.Scale.Min = 1950;
    74                 MyPane.XAxis.Scale.Max = 2025;
    75 
    76                 MyPane.Chart.Fill = new Fill(Color.White, Color.LightGray, 45.0f);
    77 
    78 
    79                 // Add a text box with instructions
    80                 TextObj text = new TextObj(
    81                     "左键拖拽放大
    鼠标中键滚放缩
    右键菜单",
    82                     0.05f, 0.95f, CoordType.ChartFraction, AlignH.Left, AlignV.Bottom);
    83                 text.FontSpec.StringAlignment = StringAlignment.Near;
    84                 MyPane.GraphObjList.Add(text);
    85 
    86                 zedGraphControl1.IsShowHScrollBar = true;
    87                 zedGraphControl1.IsShowVScrollBar = true;
    88                 zedGraphControl1.IsAutoScrollRange = true;
    89 
    90                 zedGraphControl1.IsShowPointValues = true;
    91                 zedGraphControl1.PointValueEvent += new ZedGraphControl.PointValueHandler(MyPointValueHandler);
    92                 zedGraphControl1.AxisChange();
    93                 // Make sure the Graph gets redrawn
    94                 //zedGraphControl1.Invalidate();
    95             
    96         }
    97  
    98         }
    View Code

    SQL查询语句构造好了查询的结果绘图才能一一对应,不然就乱了,年份和值对应不起来真让我蛋疼,不过重新通过构造SQL解决问题了。

    1         public 洱海各月出流流量frm()
    2         {
    3             InitializeComponent();
    4             Drawline();//画折线函数放在这个位置,解决了每次选择查询日期窗体加载时,重新绘制折线图问题
    5         }
    View Code

    在前一篇随笔中的绘图有BUG,每次窗体重新加载,或者选择日期以后,都会重复画图,画的图不是重叠的,图标会不断地增多,蛋疼,尝试使用点击按钮控制绘图,但是感觉不太好,想了想还是让窗体初始化就绘图,这样就解决了以上重复绘图的BUG。

  • 相关阅读:
    Cocos2d-x 3.0截屏功能集成
    游戏嵌入Webview网页
    Cocos2dx进阶学习之屏幕适配
    Android如何实现文件下载并自动安装apk包!!!
    LINQ Select变量定义 Expression<Func<TSource, TResult>>
    StringComparison枚举
    .net core DBFirst 生成Model表结构
    .net core反向工程Model生成 配置机密
    axios下载文件.net Core
    EFCore Database-first深入研究
  • 原文地址:https://www.cnblogs.com/yuhuameng/p/3659192.html
Copyright © 2020-2023  润新知