TeeChart Pro .NET使用教程(2022):如何使用系列类型(下)

本次TeeChart Pro .NET使用教程将为大家带来如何使用系列类型。

点击立即下载最新版TeeChart for .NET

在图表上混合系列类型

TeeChart Pro 提供一个空白图表画布作为数据系列的背景。 这意味着没有预定义图表类型。 您将所需的图表类型定义为您希望显示的系列类型的组合。 由于某些系列类型的特殊性,在图表上将该系列类型与另一种混合是不切实际的。 当您到达以添加新系列时,TeeChart 可以帮助您在图表库中灰显不合适的系列类型。 您可以在一张图表中放入的系列数量没有实际限制。

添加新系列
[C#]private void button1_Click(object sender, System.EventArgs e)        {            Bar bar1 = new Bar(tChart1.Chart);            bar1.FillSampleValues(10);        }[VB.Net]Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click        Dim Bar1 As New Steema.TeeChart.Styles.Bar(TChart1.Chart)        Bar1.FillSampleValues(10)End Sub

系列被添加到系列列表中,并且可以通过索引 TChart1.Series(Index) 访问,第一个系列从 0 开始。 TeeChart Pro 为系列添加默认名称(系列 0、系列 1 等)。 您可以使用 Series.Title 属性修改名称。

为系列选择轴
[C#]bar1.VertAxis = Steema.TeeChart.Styles.VerticalAxis.Right;bar1.HorizAxis = Steema.TeeChart.Styles.HorizontalAxis.Top;[VB.Net]Bar1.VertAxis = Steema.TeeChart.Styles.VerticalAxis.RightBar1.HorizAxis = Steema.TeeChart.Styles.HorizontalAxis.Top

超过 1 个系列可能与每个轴相关联。 TeeChart 将决定适合与轴匹配的系列的最佳比例,但您可以自己更改轴比例。 可以添加额外的轴; 他们将从前 4 个轴复制与其对应的比例尺。

连接系列
[C#]Steema.TeeChart.Functions.Average average1 = new Steema.TeeChart.Functions.Average();line1.Function = average1;line1.DataSource = bar1;bar1.FillSampleValues(10);line1.CheckDataSource();[VB.Net]Dim Average1 As New Steema.TeeChart.Functions.Average()Line1.Function = Average1Line1.DataSource = Bar1Bar1.FillSampleValues(10)Line1.CheckDataSource()
更改系列顺序
[C#]tChart1.Series.Exchange(0, 1);  //Change Series(0) with Series(1) in the index order[VB.Net]TChart1.Series.Exchange(0, 1) 'Change Series(0) with Series(1) in the index order
为系列选择轴

TeeChart 系列将它们的值存储在可通过 ValueList 类访问和修改的 Valuelist 中。

访问系列值

您可以访问列表中的任何值:

[C#]MessageBox.Show(bar1.YValues[3].ToString()); //Displays value of 4th point (index starts at 0) of a BarSeries[VB.Net]MsgBox(Bar1.YValues(3)) 'Displays value of 4th point (index starts at 0) of a BarSeries

以这种方式访问的值可用于在系列数据上设置陷阱:

[C#]for(int i = 0; i < bar1.Count; ++i)            {                if(bar1.YValues[i] > 500)                {                    MessageBox.Show("Value: (" + bar1.XValues[i] + ", " + bar1.YValues[i] + ") exceeds limit");                }            }[VB.Net]Dim i As IntegerFor i = 0 To Bar1.Count    If Bar1.YValues(i) > 500 Then        MsgBox("Value: (" & Bar1.XValues(i) & ", " & Bar1.YValues(i) & ") exceeds limit")    End IfNext

可以通过一些 Series 方法和几个 Chart 事件使用的点 ValueIndex 获得相同的值。

[C#]private void tChart1_ClickSeries(object sender, Steema.TeeChart.Styles.Series s, int valueIndex, System.Windows.Forms.MouseEventArgs e)        {            if(s.Equals(bar1))            {                MessageBox.Show("ValueIndex is: " + valueIndex.ToString());                MessageBox.Show("Point's YValue is " + bar1.YValues[valueIndex].ToString());            }        }[VB.Net]Private Sub TChart1_ClickSeries(ByVal sender As Object, ByVal s As Steema.TeeChart.Styles.Series, ByVal valueIndex As Integer, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TChart1.ClickSeries        If s Is Bar1 Then            MsgBox("ValueIndex is: " & valueIndex)            MsgBox("Point's YValue is " & Bar1.YValues(valueIndex))        End IfEnd Sub
使用值的示例

此代码根据用户的鼠标点击修改 BarSeries Bar 的值。

使用 TChart.ClickSeries 事件来确定用户单击的位置。

[C#]private void tChart1_ClickSeries(object sender, Steema.TeeChart.Styles.Series s, int valueIndex, System.Windows.Forms.MouseEventArgs e)        {            UpDatePoint(valueIndex,tChart1.Axes.Left.CalcPosPoint((e.Y)));        }[VB.Net]Private Sub TChart1_ClickSeries(ByVal sender As Object, ByVal s As Steema.TeeChart.Styles.Series, ByVal valueIndex As Integer, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TChart1.ClickSeries        UpDatePoint(valueIndex, TChart1.Axes.Left.CalcPosPoint(e.Y))End Sub

调用 UpdatePoint Sub 例程来修改 Bar 的值:

[C#]private void UpDatePoint(int Bar, double Y)        {            if(Bar < tChart1.Series[0].Count)            {                tChart1.Series[0].YValues[Bar] = Y;                tChart1.Series[0].Repaint();            }                                                              }[VB.Net]Private Sub UpDatePoint(ByVal Bar As Integer, ByVal Y As Double)        If Bar < TChart1.Series(0).Count Then            TChart1.Series(0).YValues(Bar) = Y            TChart1.Series(0).Repaint()        End IfEnd Sub
系列活动

上一节介绍了 Series 事件的一些用法。 本节展示了一些额外的用途。

OnClick系列

您可以使用 OnClickSeries 事件来获取有关系列的几乎所有信息。

这些示例适用于具有日期时间数据的系列,例如这些测试值可用于以下事件示例:

[C#]private void button1_Click(object sender, System.EventArgs e)        {            Random rnd = new Random();            line1.XValues.DateTime = true;            line1.Pointer.Visible = true;            line1.Add(DateTime.Parse("25/12/2002 10:30:00"),rnd.Next(100),"", Color.Red);            line1.Add(DateTime.Parse("25/12/2002 22:30:00"),rnd.Next(100),"", Color.Red);            line1.Add(DateTime.Parse("26/12/2002 09:20:00"),rnd.Next(100),"", Color.Red);            line1.Add(DateTime.Parse("26/12/2002 23:30:00"),rnd.Next(100),"", Color.Red);            line1.Add(DateTime.Parse("27/12/2002 11:10:00"),rnd.Next(100),"", Color.Red);            line1.Add(DateTime.Parse("27/12/2002 20:15:00"),rnd.Next(100),"", Color.Red);            line1.Add(DateTime.Parse("28/12/2002 08:15:00"),rnd.Next(100),"", Color.Red);            line1.Add(DateTime.Parse("28/12/2002 21:45:00"),rnd.Next(100),"", Color.Red);            line1.Add(DateTime.Parse("29/12/2002 12:45:00"),rnd.Next(100),"", Color.Red);            line1.Add(DateTime.Parse("29/12/2002 22:05:00"),rnd.Next(100),"", Color.Red);            line1.HorizAxis = Steema.TeeChart.Styles.HorizontalAxis.Top;        }private void tChart1_ClickSeries(object sender, Steema.TeeChart.Styles.Series s, int valueIndex, System.Windows.Forms.MouseEventArgs e)        {            //The below will show the Value of the nearest Point, not the exact Axis value at the clicked X and Y.             MessageBox.Show("Date is: " + DateTime.FromOADate(line1.XValues[valueIndex])            + " Value is: " + line1.YValues[valueIndex]);         }[VB.Net]Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click        Dim rnd As New Random()        Line1.XValues.DateTime = True        Line1.Pointer.Visible = True        Line1.Add(DateTime.Parse("25/12/2002 10:30:00"), rnd.Next(100), "", Color.Red)        Line1.Add(DateTime.Parse("25/12/2002 22:30:00"), rnd.Next(100), "", Color.Red)        Line1.Add(DateTime.Parse("26/12/2002 09:20:00"), rnd.Next(100), "", Color.Red)        Line1.Add(DateTime.Parse("26/12/2002 23:30:00"), rnd.Next(100), "", Color.Red)        Line1.Add(DateTime.Parse("27/12/2002 11:10:00"), rnd.Next(100), "", Color.Red)        Line1.Add(DateTime.Parse("27/12/2002 20:15:00"), rnd.Next(100), "", Color.Red)        Line1.Add(DateTime.Parse("28/12/2002 08:15:00"), rnd.Next(100), "", Color.Red)        Line1.Add(DateTime.Parse("28/12/2002 21:45:00"), rnd.Next(100), "", Color.Red)        Line1.Add(DateTime.Parse("29/12/2002 12:45:00"), rnd.Next(100), "", Color.Red)        Line1.Add(DateTime.Parse("29/12/2002 22:05:00"), rnd.Next(100), "", Color.Red)        Line1.HorizAxis = Steema.TeeChart.Styles.HorizontalAxis.TopEnd SubPrivate Sub TChart1_ClickSeries(ByVal sender As Object, ByVal s As Steema.TeeChart.Styles.Series, ByVal valueIndex As Integer, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TChart1.ClickSeries        'The below will show the Value of the nearest Point, not the exact Axis value at the clicked X and Y.         MsgBox("Date is: " & DateTime.FromOADate(Line1.XValues(valueIndex)) _              & " Value is: " & Line1.YValues(valueIndex))End Sub
OnGetSeriesPointerStyle

对于那些使用 TChart 指针的系列,您可以使用 OnGetSeriesPointer 事件访问和修改指针。

如果 Point 高于最后一个,则绘制 Uptriangle,如果更低,则绘制 DownTriangle 等。

[C#]private void line1_GetPointerStyle(Steema.TeeChart.Styles.CustomPoint series, Steema.TeeChart.Styles.GetPointerStyleEventArgs e)        {            if(e.ValueIndex > 0)            {                if(line1.YValues[e.ValueIndex] > line1.YValues[e.ValueIndex - 1])                {                    e.Style = Steema.TeeChart.Styles.PointerStyles.Triangle;                }                else if(line1.YValues[e.ValueIndex] < line1.YValues[e.ValueIndex - 1])                {                    e.Style = Steema.TeeChart.Styles.PointerStyles.DownTriangle;                }                else                {                    e.Style = Steema.TeeChart.Styles.PointerStyles.Diamond;                }            }            else            {                e.Style = Steema.TeeChart.Styles.PointerStyles.Diamond;            }        }[VB.Net]Private Sub Line1_GetPointerStyle(ByVal series As Steema.TeeChart.Styles.CustomPoint, ByVal e As Steema.TeeChart.Styles.GetPointerStyleEventArgs) Handles Line1.GetPointerStyle        If e.ValueIndex > 0 Then            If (Line1.YValues(e.ValueIndex) > Line1.YValues(e.ValueIndex - 1)) Then                e.Style = Steema.TeeChart.PointerStyles.Triangle            ElseIf (Line1.YValues(e.ValueIndex) < Line1.YValues(e.ValueIndex - 1)) Then                e.Style = Steema.TeeChart.Styles.PointerStyles.DownTriangle            Else                e.Style = Steema.TeeChart.Styles.PointerStyles.Diamond            End If        Else            e.Style = Steema.TeeChart.Styles.PointerStyles.Diamond        End IfEnd Sub
OnGetSeriesMark

使用 OnGetSeriesMark 事件在运行时修改标记内容。 以下代码根据相对于最后一个的值改变 MarkText。

TeeChart 支持通过 DragMarks Tool 在重叠的情况下拖动标记:

[C#]private void line1_GetSeriesMark(Steema.TeeChart.Styles.Series series, Steema.TeeChart.Styles.GetSeriesMarkEventArgs e)        {            if(e.ValueIndex > 0)            {                if(line1.YValues[e.ValueIndex] > line1.YValues[e.ValueIndex - 1])                {                    e.MarkText = e.MarkText + " (Up)";                }                else if(line1.YValues[e.ValueIndex] < line1.YValues[e.ValueIndex - 1])                {                    e.MarkText = e.MarkText + " (Down)";                }                else                {                    e.MarkText = e.MarkText + " (No Change)";                }            }        }[VB.Net]Private Sub Line1_GetSeriesMark(ByVal series As Steema.TeeChart.Styles.Series, ByVal e As Steema.TeeChart.Styles.GetSeriesMarkEventArgs) Handles Line1.GetSeriesMark        If (e.ValueIndex > 0) Then            If (Line1.YValues(e.ValueIndex) > Line1.YValues(e.ValueIndex - 1)) Then                e.MarkText = e.MarkText + " (Up)"            ElseIf (Line1.YValues(e.ValueIndex) < Line1.YValues(e.ValueIndex - 1)) Then                e.MarkText = e.MarkText + " (Down)"            End If        Else            e.MarkText = e.MarkText + " (No Change)"        End IfEnd Sub

最后 2 个事件产生的图表外观是:

TeeChart Pro .NET使用教程(2022):如何进行图例设计


如果您想了解TeeChart for .NET正版价格,欢迎咨询在线客服

标签:

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年1月19日
下一篇 2022年1月19日

相关推荐

发表回复

登录后才能评论