服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C# - c# 设置TeeChart控件的提示文本

c# 设置TeeChart控件的提示文本

2022-10-14 12:11一只独行的猿 C#

这篇文章主要介绍了c# 如何设置TeeChart控件的提示文本,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下

  使用第三方Steema的TeeChart控件,设置鼠标放在某一线条点上,显示某一点的数据标签问题(虚线型十字光标基准线,放在线上显示对应点的二维坐标轴数据数据),调用InitTeeChartTipTools方法即可:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
/// <summary>
/// TeeChart线条的指示工具
/// </summary>
Steema.TeeChart.Tools.CursorTool cursorTool;
/// <summary>
/// 鼠标指示显示的文本
/// </summary>
private Steema.TeeChart.Tools.Annotation annotation;
/// <summary>
/// 初始化线条的提示工具信息
/// </summary>
private void InitTeeChartTipTools(Steema.TeeChart.TChart tChart)
{
  //以线形式对标坐标轴
  cursorTool = new Steema.TeeChart.Tools.CursorTool(tChart.Chart);
  cursorTool.Style = Steema.TeeChart.Tools.CursorToolStyles.Both;
  cursorTool.Pen.Style = System.Drawing.Drawing2D.DashStyle.Dash;
  cursorTool.Pen.Color = Color.Black;
  cursorTool.FollowMouse = true;
  cursorTool.Change += CursorTool_Change;
  //设置提示文本的信息
  annotation = new Steema.TeeChart.Tools.Annotation(tChart.Chart);
  annotation.Shape.Font.Name = "Arial";
  annotation.Shape.Font.Size = 12;
  annotation.Shape.Pen.Visible = true;
  annotation.Shape.Shadow.Visible = false;
  annotation.Shape.ShapeStyle = Steema.TeeChart.Drawing.TextShapeStyle.Rectangle;
  annotation.Position = Steema.TeeChart.Tools.AnnotationPositions.LeftBottom;
  annotation.TextAlign = StringAlignment.Center;
 
  for (int i = 0; i < tChart.Series.Count; i++)
  {
    tChart.Series[i].MouseEnter += Line_MouseEnter;
    tChart.Series[i].MouseLeave += Line_MouseLeave;
  }
 
  tChart.MouseLeave += TChart_MouseLeave;
  tChart.MouseEnter += TChart_MouseEnter;
}
 
/// <summary>
/// 鼠标进入TeeChart的事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void TChart_MouseEnter(object sender, EventArgs e)
{
  cursorTool.Chart=tChartCurve.Chart;
}
 
/// <summary>
/// 鼠标离开TeeChart的事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void TChart_MouseLeave(object sender, EventArgs e)
{
  cursorTool.Chart = null;
}
 
 
/// <summary>
/// 当鼠标进入线条时,将TeeChart的cursorTool工具指示的线条设置为对应的线条
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Line_MouseEnter(object sender, EventArgs e)
{
  cursorTool.Series = sender as Steema.TeeChart.Styles.Series;
}
 
/// <summary>
/// 当鼠标离开线条时,将TeeChart的cursorTool工具指示的线条设置为null
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Line_MouseLeave(object sender, EventArgs e)
{
  cursorTool.Series = null;
}
/// <summary>
/// 鼠标指示工具改变事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void CursorTool_Change(object sender, Steema.TeeChart.Tools.CursorChangeEventArgs e)
{
  try
  {
    Steema.TeeChart.Tools.CursorTool cursor = sender as Steema.TeeChart.Tools.CursorTool;
    if (cursor != null && cursor.Series != null)
    {
      annotation.Text = string.Format("({0},{1})", cursor.XValue.ToString("f1"), cursor.YValue.ToString("f1"));
      annotation.Top = cursor.Series.GetVertAxis.CalcYPosValue(InterpolateLineSeries(cursor.Series, cursor.XValue));
      annotation.Left = tChartCurve.Axes.Bottom.CalcXPosValue(cursor.XValue);
      annotation.Top -= 20;//将文本放在鼠标上方
      SizeF size = this.CreateGraphics().MeasureString(annotation.Text,
        new Font(annotation.Shape.Font.Name, annotation.Shape.Font.Size));
      if (annotation.Left + size.Width + 12 >= annotation.Chart.Width)
      {
        annotation.Left -= (int)size.Width + 12;//防止文本标签超出右边界而看不全
      }
    }
    else
    {
      //将其设置到控件外部
      annotation.Text = "";
      annotation.Top = annotation.Chart.Height + 5;
      annotation.Left = annotation.Chart.Width + 5;
    }
  }
  catch (Exception ex)
  {
    annotation.Text = ex.Message;
    annotation.Top = 5;
    annotation.Left = 5;
  }
}
/// <summary>
/// 计算某一点的Y值坐标
/// </summary>
/// <param name="series">曲线</param>
/// <param name="xvalue">对应的X轴的值</param>
/// <returns>计算得到的对应的Y轴的值</returns>
private double InterpolateLineSeries(Steema.TeeChart.Styles.Series series, double xvalue)
{
  try
  {
    int index;
    for (index = series.FirstVisibleIndex; index <= series.LastVisibleIndex; index++)
    {
      if (index == -1 || series.XValues.Value[index] > xvalue) break;
    }
    // safeguard
    if (index < 1)
    {
      index = 1;
    }
    else if (index >= series.Count)
    {
      index = series.Count - 1;
    }
    // y=(y2-y1)/(x2-x1)*(x-x1)+y1
    double dx = series.XValues[index] - series.XValues[index - 1];
    double dy = series.YValues[index] - series.YValues[index - 1];
    if (dx != 0.0)
    {
      return dy * (xvalue - series.XValues[index - 1]) / dx + series.YValues[index - 1];
    }
    else
    {
      return 0.0;
    }
  }
  catch (Exception ex)
  {
    Console.WriteLine(ex.Message);
    return 0.0;
  }
}

以上就是c# 设置TeeChart控件的提示文本的详细内容,更多关于c# 设置提示文本的资料请关注服务器之家其它相关文章!

原文链接:https://www.cnblogs.com/pilgrim/p/10288061.html

延伸 · 阅读

精彩推荐
  • C#HttpHelper类的调用方法详解

    HttpHelper类的调用方法详解

    这篇文章主要为大家详细介绍了HttpHelper类的使用方法,HttpHelper类及调用,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    幻影星辰10432022-01-12
  • C#C#实现子窗体与父窗体通信方法实例总结

    C#实现子窗体与父窗体通信方法实例总结

    这篇文章主要介绍了C#实现子窗体与父窗体通信方法,实例总结了常用的四种窗体通信方法,具有一定参考借鉴价值,需要的朋友可以参考下...

    C#教程网8322021-10-26
  • C#使用Visual Studio2019创建C#项目(窗体应用程序、控制台应用程序、Web应用程序)

    使用Visual Studio2019创建C#项目(窗体应用程序、控制台应用程序、

    这篇文章主要介绍了使用Visual Studio2019创建C#项目(窗体应用程序、控制台应用程序、Web应用程序),小编觉得挺不错的,现在分享给大家,也给大家做个参考。...

    jiangxiaoju7902022-08-28
  • C#基于C# 写一个 Redis 数据同步小工具

    基于C# 写一个 Redis 数据同步小工具

    Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这篇文章主要介绍了用 C# 写一个...

    Love it or leave it4902022-08-24
  • C#C# WinForm快捷键设置技巧

    C# WinForm快捷键设置技巧

    这篇文章主要给大家介绍C# winform快捷键设置技巧,涉及到C winform快捷键相关知识,对C winform知识感兴趣的朋友可以参考下本篇文章...

    凌晨三秒7812021-11-01
  • C#C# httpwebrequest访问HTTPS错误处理方法

    C# httpwebrequest访问HTTPS错误处理方法

    下面小编就为大家带来一篇C# httpwebrequest访问HTTPS错误处理方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    C#教程网4482021-12-22
  • C#C#中foreach实现原理详解

    C#中foreach实现原理详解

    这篇文章主要为大家详细介绍了C#中foreach实现原理,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    阿珑5512022-01-22
  • C#Winform学生信息管理系统主页面设计(2)

    Winform学生信息管理系统主页面设计(2)

    这篇文章主要为大家详细介绍了Winform学生信息管理系统主页面设计思路,感兴趣的小伙伴们可以参考一下...

    丿木呈广予口贝6652021-11-23