翻译|使用教程|编辑:凌霄汉|2022-03-22 17:02:43.950|阅读 137 次
概述:本次TeeChart Pro .NET使用教程将为大家带来如何使用系列类型。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
相关链接:
本文将接着上一篇文章未讲完的部分给大家继续讲解。
TeeChart Pro 提供一个空白图表画布作为数据系列的背景。 这意味着没有预定义图表类型。 您将所需的图表类型定义为您希望显示的系列类型的组合。 由于某些系列类型的特殊性,在图表上将该系列类型与另一种混合是不切实际的。 当您到达以添加新系列时,TeeChart 可以帮助您在图表库中灰显不合适的系列类型。 您可以在一张图表中放入的系列数量没有实际限制。
使用 TeeChart 编辑器(参见教程 1)或通过代码添加系列。
[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 属性修改名称。
添加到图表的系列将自动将左轴和下轴作为参考轴。 您可以通过选择相关系列的系列常规页面来更改图表编辑器中的参考轴。 有 4 个轴可用,上、左、下和右。 通过代码,更改轴将如下所示:
[C#] bar1.VertAxis = Steema.TeeChart.Styles.VerticalAxis.Right; bar1.HorizAxis = Steema.TeeChart.Styles.HorizontalAxis.Top; [VB.Net] Bar1.VertAxis = Steema.TeeChart.Styles.VerticalAxis.Right Bar1.HorizAxis = Steema.TeeChart.Styles.HorizontalAxis.Top
超过 1 个系列可能与每个轴相关联。 TeeChart 将决定适合与轴匹配的系列的最佳比例,但您可以自己更改轴比例。 可以添加额外的轴; 他们将从前 4 个轴复制与其对应的比例尺。
您可以使用一个系列作为另一个系列的数据源。 这可以通过图表编辑器通过设置第二个系列的数据源来完成。 转到系列选项卡,数据源页面。 选择“函数”作为数据源类型。 将出现两个列表框,可用系列和选定系列。 选择您希望用作当前系列的数据源的系列,然后在上面的组合框中,标题为 Functions:,选择 Average 作为函数类型,然后单击 Apply 按钮。 请注意,以这种方式,任何系列都可以定义为任何其他系列的函数,并且函数类型可以是函数组合框中可用的任何列表。 要通过代码执行相同的操作:
[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 = Average1 Line1.DataSource = Bar1 Bar1.FillSampleValues(10) Line1.CheckDataSource()
使用图表编辑器更改系列顺序非常容易。 转到编辑器的彩票走势图并突出显示您要移动的系列。 使用右侧的箭头按钮按系列顺序向上或向下移动系列。 系列顺序将决定图表中系列相对于其他系列的相对显示位置。 将系列设置为“Active=False”将从图表中隐藏系列,但保持其数据内容不变。
[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 Integer For i = 0 To Bar1.Count If Bar1.YValues(i) > 500 Then MsgBox("Value: (" & Bar1.XValues(i) & ", " & Bar1.YValues(i) & ") exceeds limit") End If Next
可以通过一些 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 If End 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 If End Sub
上一节介绍了 Series 事件的一些用法。 本节展示了一些额外的用途。
您可以使用 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.Top End Sub 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 '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
对于那些使用 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 If End Sub
使用 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 If End Sub
最后 2 个事件产生的图表外观是:
如果您想了解TeeChart for .NET正版价格,欢迎咨询
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn