• TeeChart 的使用从入门到精通


    1.首先nutGet 进行使用

    2.如果需要使用管方的Key 进行激活

    3.直接上写的Demo代码

    复制代码
      1 using System;
      2 using System.Collections.Generic;
      3 using System.ComponentModel;
      4 using System.Data;
      5 using System.Drawing;
      6 using System.Linq;
      7 using System.Text;
      8 using System.Threading.Tasks;
      9 using System.Windows.Forms;
     10 using Steema.TeeChart;
     11 using Steema.TeeChart.Styles;
     12 
     13 namespace TeechartForm
     14 {
     15     public partial class FormTeeChart : Form
     16     {
     17         private TChart tChart;
     18         private Label labelValue = new Label();
     19         public FormTeeChart()
     20         {
     21             InitializeComponent();
     22             // 在构造函数中初始化TChart  
     23             tChart = new TChart();
     24             //tChart.Parent = this.panelCharts;
     25             tChart.Dock = DockStyle.Fill;
     26             this.panelCharts.Controls.Add(tChart);
     27 
     28             // 初始化 labelValue
     29             //labelValue.AutoSize = true;
     30             //labelValue.BackColor = Color.Transparent;
     31             //labelValue.Visible = false; // 默认情况下不可见
     32             //this.Controls.Add(labelValue);
     33 
     34             //tChart.MouseMove += TChart_MouseMove;
     35         }
     36 
     37         private void FormTeeChart_Load(object sender, EventArgs e)
     38         {
     39 
     40         }
     41 
     42         // 添加一个标志来跟踪鼠标是否被按下
     43         private bool isMouseDown = false;
     44 
     45 
     46 
     47         private bool mOnBoxing = false;
     48         Point mPoint1 = new Point();
     49         Point mPoint2 = new Point();
     50         private void TChart_MouseHover(object sender, MouseEventArgs e)
     51         {
     52             MessageBox.Show("1");
     53             //labelValue.Text = "111";
     54             //labelValue.Visible = true; 
     55 
     56             TChart chart = (TChart)sender;
     57             if (Control.ModifierKeys == Keys.None)
     58             {
     59                 mPoint2 = e.Location;
     60 
     61                 chart.Invalidate();
     62             }
     63         }
     64 
     65 
     66         private void buttonLine_Click(object sender, EventArgs e)
     67         {
     68             //条形图
     69             BarChart();
     70 
     71         }
     72 
     73         private void buttonBoxPlot_Click(object sender, EventArgs e)
     74         {
     75             BoxPlot();
     76             //tChart.MouseMove += TChart_MouseMove;
     77         }
     78 
     79 
     80         /// 
     81         /// 进行获取Tcharts 鼠标移动的位置
     82         /// 
     83         /// 
     84         /// 
     85         private void TChart_MouseMove(object sender, MouseEventArgs e)
     86         {
     87             // 获取鼠标在图表上的位置
     88             int x = e.X;
     89             int y = e.Y;
     90 
     91             Series s = tChart.Series[0];
     92             int pointIndex = s.Clicked(e.X, e.Y);
     93             if (pointIndex != -1)
     94             {
     95                 // 获取数据点的值
     96                 double value = s.YValues[pointIndex];
     97 
     98                 // 设置标签文本
     99                 labelValue.Text = "Value: " + value.ToString();
    100 
    101                 // 移动标签位置并显示
    102                 labelValue.Left = x + 10; // 鼠标位置的偏移量
    103                 labelValue.Top = y;
    104                 labelValue.Visible = true;
    105             }
    106             else
    107             {
    108                 // 如果不在任何数据点上,则不显示标签 
    109                 //labelValue.Visible = false;
    110             }
    111         }
    112 
    113         private void GantMap_Click(object sender, EventArgs e)
    114         {
    115             Gant();
    116         }
    117 
    118         private void LineMap_Click(object sender, EventArgs e)
    119         {
    120             LineChart();
    121         }
    122 
    123 
    124         /// 
    125         /// 折线图
    126         /// 
    127         public void LineChart()
    128         {
    129             // 清除现有的系列
    130             tChart.Series.Clear();
    131 
    132             // 创建一个折线图系列
    133             Line lineSeries = new Line(tChart.Chart);
    134 
    135             // 添加数据到图表
    136             lineSeries.Add(0, "Apples");
    137             lineSeries.Add(5, "Pears");
    138             lineSeries.Add(2, "Oranges");
    139             lineSeries.Add(7, "Bananas");
    140             lineSeries.Add(4, "Pineapples");
    141 
    142             // 将系列添加到TChart
    143             tChart.Series.Add(lineSeries);
    144 
    145             // 鼠标移动事件
    146             tChart.MouseMove += (s, e) =>
    147             {
    148                 int pointIndex = -1;
    149                 // 遍历所有系列
    150                 foreach (Series series in tChart.Series)
    151                 {
    152                     // 尝试找到鼠标下的数据点
    153                     pointIndex = series.Clicked(e.X, e.Y);
    154                     if (pointIndex != -1)
    155                     {
    156                         // 如果找到数据点,执行所需的操作
    157                         string pointLabel = series.Labels[pointIndex];
    158                         double pointValue = series.YValues[pointIndex];
    159                         tChart.ClickTitle += TChart_ClickTitle;
    160                         //tChart.ClickTitle + = "Value: " + pointValue.ToString() + " for " + pointLabel;
    161 
    162                         break; // 跳出循环,因为我们已经找到了数据点
    163                     }
    164                     else
    165                     {
    166                         tChart.Header.Text = "";
    167                     }
    168                 }
    169             };
    170 
    171             // 其他代码保持不变...
    172 
    173             // 设置图表标题
    174             tChart.Header.Text = "Fruit Consumption";
    175             tChart.Header.Visible = true;
    176             tChart.Refresh();
    177             tChart.Invalidate(); // 可能不需要手动调用 
    178         }
    179 
    180         private void TChart_ClickTitle(object sender, MouseEventArgs e)
    181         {
    182             MessageBox.Show("1111");
    183         }
    184 
    185 
    186         /// 
    187         /// 条形图
    188         /// 
    189         public void BarChart()
    190         {
    191             // 清除现有的系列
    192             tChart.Series.Clear();
    193             // 创建一个条形图系列
    194             Bar barSeries = new Bar();
    195             // 添加数据到图表
    196             barSeries.Add(0, "Apples");
    197             barSeries.Add(5, "Pears");
    198             barSeries.Add(2, "Oranges");
    199             barSeries.Add(7, "Bananas");
    200             barSeries.Add(4, "Pineapples");
    201 
    202             // 将系列添加到TChart
    203             tChart.Series.Add(barSeries);
    204 
    205 
    206             // 鼠标按下事件
    207             //tChart.MouseMove += (s, e) =>
    208             //{
    209             //    if (e.Button == MouseButtons.Left)
    210             //    {
    211             //        isMouseDown = true;  // 设置标志为true
    212             //        MessageBox.Show("11");
    213             //    }
    214             //};
    215 
    216             // 在类的成员区域初始化一个工具提示
    217             System.Windows.Forms.ToolTip tooltip = new System.Windows.Forms.ToolTip();
    218 
    219             // 鼠标释放事件
    220             tChart.MouseMove += (s, e) =>
    221             {
    222                 if (e.Button == MouseButtons.Left)
    223                 {
    224                     int pointIndex = -1;
    225                     // 遍历所有系列
    226                     foreach (Series series in tChart.Series)
    227                     {
    228                         // 尝试找到点击的数据点
    229                         pointIndex = series.Clicked(e.X, e.Y);
    230 
    231                         if (pointIndex != -1)
    232                         {
    233                             // 如果找到数据点,执行所需的操作
    234                             string pointLabel = series.Labels[pointIndex];
    235                             double pointValue = series.YValues[pointIndex];
    236                             //MessageBox.Show("Clicked on: " + pointLabel + " Value: " + pointValue.ToString());
    237 
    238                             // 显示工具提示
    239                             tooltip.Show("Value: " + pointValue.ToString() + " for " + pointLabel, tChart, e.Location.X + 15, e.Location.Y - 15, 2000); // 显示2秒
    240 
    241                             break; // 跳出循环,因为我们已经找到了数据点
    242                         }
    243                     }
    244                 }
    245             };
    246 
    247 
    248             // 绑定鼠标点击事件处理程序到 tChart 控件
    249             //tChart.MouseClick += (s, e) =>
    250             //{
    251             //    if (e.Button == MouseButtons.Left)
    252             //    {
    253             //        int pointIndex = -1;
    254             //        // 遍历所有系列
    255             //        foreach (Series series in tChart.Series)
    256             //        {
    257             //            // 尝试找到点击的数据点
    258             //            pointIndex = series.Clicked(e.X, e.Y);
    259 
    260             //            if (pointIndex != -1)
    261             //            {
    262             //                // 如果找到数据点,执行所需的操作
    263             //                string pointLabel = series.Labels[pointIndex];
    264             //                double pointValue = series.YValues[pointIndex];
    265             //                MessageBox.Show("Clicked on: " + pointLabel + " Value: " + pointValue.ToString());
    266             //                break; // 跳出循环,因为我们已经找到了数据点
    267             //            }
    268             //        }
    269             //    }
    270             //};
    271 
    272             // 其他代码保持不变... 
    273             // 其他代码保持不变...
    274             // 在类的成员区域初始化一个工具提示
    275             /*System.Windows.Forms.ToolTip tooltip = new System.Windows.Forms.ToolTip();
    276             // 鼠标移动事件
    277             chart.MouseMove += (s, e) =>
    278             {
    279                 int pointIndex = -1;
    280                 // 遍历所有系列
    281                 foreach (Series series in chart.Series)
    282                 {
    283                     Point mPointss = new Point();
    284                     // 尝试找到鼠标下的数据点
    285                     pointIndex = series.Clicked(e.X, e.Y);
    286 
    287                     if (pointIndex != -1)
    288                     {
    289                         // 如果找到数据点,执行所需的操作
    290                         string pointLabel = series.Labels[pointIndex];
    291                         double pointValue = series.YValues[pointIndex];
    292                         // 显示工具提示
    293                         tooltip.Show("Value: " + pointValue.ToString() + " for " + pointLabel, chart, e.Location.X + 15, e.Location.Y - 15, 2000); // 显示2秒
    294                         // chart.Invalidate();
    295                         break; // 跳出循环,因为我们已经找到了数据点
    296                     }
    297 
    298                 }
    299             };
    300             */
    301 
    302             // 设置图表标题
    303             tChart.Header.Text = "Fruit Consumption";
    304             tChart.Header.Visible = true;
    305             tChart.Refresh();
    306             tChart.Invalidate();
    307 
    308 
    309         }
    310 
    311         /// 
    312         /// BoxPlot
    313         /// 
    314         public void BoxPlot()
    315         {
    316 
    317             // 清除现有的系列
    318             tChart.Series.Clear();
    319 
    320             // 创建一个 BoxPlot 系列
    321             Box boxSeries = new Box(tChart.Chart);
    322 
    323             // 填充 BoxPlot 数据
    324             boxSeries.Add(new double[] { 3, 5, 7, 2, 6 });
    325             boxSeries.Add(new double[] { 4, 6, 8, 3, 7 });
    326             boxSeries.Add(new double[] { 5, 7, 9, 4, 8 });
    327             boxSeries.Add(new double[] { 5, 7, 9, 4, 8 });
    328             //boxSeries.Add(new double[] { 15, 17, 19, 14, 18 });
    329             // ... 添加更多的数据点 ...
    330 
    331             // 设置标题
    332             tChart.Header.Text = "Sample BoxPlot";
    333             tChart.Header.Visible = true;
    334 
    335             // 将 BoxPlot 系列添加到 TChart
    336             tChart.Series.Add(boxSeries);
    337             tChart.Refresh();
    338             tChart.Invalidate();
    339         }
    340 
    341 
    342         /// 
    343         /// Gant
    344         /// 
    345         public void Gant()
    346         {
    347             // 清除现有的系列
    348             tChart.Series.Clear();
    349 
    350             // 创建一个甘特图系列
    351             Gantt ganttSeries = new Gantt();
    352 
    353             // 添加数据到图表,每个点的格式为 Add(DateTime start, DateTime end, string text, Color color)
    354             ganttSeries.Add(DateTime.Today.AddDays(1), DateTime.Today.AddDays(12), 100, "Project B", Color.Green);
    355             ganttSeries.Add(DateTime.Today.AddDays(3), DateTime.Today.AddDays(15), 200, "Project C", Color.Red);
    356             // ... 添加更多的数据 ...
    357 
    358             // 将系列添加到TChart
    359             tChart.Series.Add(ganttSeries);
    360 
    361             // 设置X轴为日期时间类型
    362             tChart.Axes.Bottom.Labels.Angle = 90;
    363             tChart.Axes.Bottom.Labels.DateTimeFormat = "dd-MMM";
    364             tChart.Axes.Bottom.Labels.Style = AxisLabelStyle.Value;
    365 
    366             // 设置Y轴为分类类型,便于显示任务名称
    367             tChart.Axes.Left.Labels.Angle = 0;
    368             tChart.Axes.Left.Labels.Style = AxisLabelStyle.Text;
    369 
    370             // 设置图表标题
    371             tChart.Header.Text = "Project Timeline";
    372             tChart.Header.Visible = true;
    373 
    374             // 刷新图表显示
    375             tChart.Refresh();
    376             tChart.Invalidate();
    377 
    378         }
    379 
    380     }
    381 }
    复制代码

     

     

     

     

  • 相关阅读:
    Node.js_基础知识(计算机硬件基础)
    【✨十五天搞定电工基础】一阶电路的暂态分析
    【JavaSE】注释\标识符\关键字\字面常量\数据类型与变量
    stable diffusion图片转高清前后对比
    node.js共享输液检测系统毕业设计源码131105
    MySQL高频面试题
    android Binder安全性、Unix Socket安全性研究
    R语言结课及Matlab开始
    英语单词: entropy;熵
    2712. 使所有字符相等的最小成本
  • 原文地址:https://www.cnblogs.com/LowKeyCXY/p/17950737