彩票走势图

TeeChart for .NET图表控件教程:如何与Series合作

翻译|使用教程|编辑:杨鹏连|2021-06-21 11:47:14.927|阅读 161 次

概述:作为TeeChart类型库结构的一个小背景,这里是对系列类和接口的一个解释。更多信息请参见本教程中的章节。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

相关链接:

TeeChart for .NET是优秀的工业4.0 WinForm图表控件,官方独家授权汉化,集功能全面、性能稳定、价格实惠等优势于一体。TeeChart for .NET 中文版还可让您在使用和学习上没有任何语言障碍,至少可以节省30%的开发时间。

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

系列类型 

TChart Series 类是所有 Series 类型的共同祖先。当使用TeeChart在线帮助获得关于任何系列类型的帮助时,请遵循位于继承类型列表中的系列类的链接,然后点击系列成员,那里将包括所有继承的属性和方法的列表。

系列类的结构 

作为TeeChart类型库结构的一个小背景,这里是对系列类和接口的一个解释。下图显示了TeeChart系列类之间的关系。所有的类都来自于通用的 "系列 "类,因此共享 "系列 "属性和方法。有几个抽象类派生自Series(Custom3DSeries、CustomBarSeries和CircledSeries),这些类以灰色显示,它们的接口不能直接用于编程,它们的特性被它们的后代Series类型所继承。所有派生的系列(橙色)都可以在TeeChart图库中访问,以纳入你的图表中。以这种方式派生的TeeChart系列,允许通过一个共同的索引结构对继承的属性和方法进行可编程的访问(见本节后面的示例代码)。

使用TChart编辑器在设计时添加系列更容易,但你也可以在运行时创建和添加新的和不同的系列类型到同一个TChart中。

[C#] 
//Add a series at runtime 
private void button1_Click(object sender, System.EventArgs e) 
        { 
            Steema.TeeChart.Styles.Area tmpAreaSeries = new Steema.TeeChart.Styles.Area(tChart1.Chart);  
            tmpAreaSeries.FillSampleValues(4); 
            //Or 
            //Steema.TeeChart.Styles.Area tmpAreaSeries = new Steema.TeeChart.Styles.Area(); 
            //tChart1.Series.Add(tmpAreaSeries); 
            //tmpAreaSeries.FillSampleValues(4); 
        } 
 
[VB.Net] 
'Add a series at runtime 
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
         Dim tmpAreaSeries As New Steema.TeeChart.Styles.Area(TChart1.Chart) 
        tmpAreaSeries.FillSampleValues(4) 
        'Or 
        'Dim tmpAreaSeries As New Steema.TeeChart.Styles.Area() 
        'TChart1.Series.Add(tmpAreaSeries) 
        'tmpAreaSeries.FillSampleValues(4) 
End Sub 
所有AreaSeries的属性和方法对新系列都是可用的,就像在设计时创建的任何系列一样。

在同一个图表中混合使用不同系列的例子是在一个图表中添加Area (Series(0)), Bar (Series(1)) 和 Line (Series(2)) 系列到一个图表中。所有这些都访问一个共同的索引结构,即图表的系列列表。与系列有关的工作可能看起来像下面这样。

[C#] 
private void Form1_Load(object sender, System.EventArgs e) 
        { 
            //You could add the Series at runtime  
            Steema.TeeChart.Styles.Area area1 = new Steema.TeeChart.Styles.Area(tChart1.Chart); 
            Steema.TeeChart.Styles.Bar bar1 = new Steema.TeeChart.Styles.Bar(tChart1.Chart); 
            Steema.TeeChart.Styles.Line line1 = new Steema.TeeChart.Styles.Line(tChart1.Chart); 
 
            //Use Series common properties  
            tChart1.Series[0].FillSampleValues(10); 
            tChart1.Series[1].FillSampleValues(10); 
            tChart1.Series[2].FillSampleValues(10); 
            tChart1.Series[1].Marks.Visible = false; 
            tChart1.Series[2].Marks.Visible = false; 
 
            //Modify Bar specific properties  
            bar1.BarStyle = Steema.TeeChart.Styles.BarStyles.Pyramid; //Change Bar type  
            bar1.Pen.Color = Color.Yellow; //Bar bounding lines colour  
 
            //Modify Line specific properties  
            line1.Stairs = true; //Set line to Stairs  
            line1.LinePen.Color = Color.Blue; //LineSeries bounding lines colour  
 
            //Modify Area specific properties  
            area1.AreaBrush.Style = System.Drawing.Drawing2D.HatchStyle.Cross; //Area fill pattern  
        } 
 
[VB.Net] 
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
        'You could add the Series at runtime  
        Dim Area1 As New Steema.TeeChart.Styles.Area(TChart1.Chart) 
        Dim Bar1 As New Steema.TeeChart.Styles.Bar(TChart1.Chart) 
        Dim Line1 As New Steema.TeeChart.Styles.Line(TChart1.Chart) 
 
        'Use Series common properties  
        TChart1.Series(0).FillSampleValues(10) 
        TChart1.Series(1).FillSampleValues(10) 
        TChart1.Series(2).FillSampleValues(10) 
        TChart1.Series(1).Marks.Visible = False 
        TChart1.Series(2).Marks.Visible = False 
 
        'Modify Bar specific properties  
        Bar1.BarStyle = Steema.TeeChart.Styles.BarStyles.Pyramid 'Change Bar type  
        Bar1.Pen.Color = Color.Yellow 'Bar bounding lines colour  
 
        'Modify Line specific properties  
        Line1.Stairs = True 'Set line to Stairs  
        Line1.LinePen.Color = Color.Blue 'LineSeries bounding lines colour  
 
        'Modify Area specific properties  
        Area1.AreaBrush.Style = System.Drawing.Drawing2D.HatchStyle.Cross 'Area fill pattern  
End Sub 
选择一个系列类型 

为图表选择系列类型在很大程度上取决于你自己对图表的要求。然而,在有些情况下,由于要绘制的变量数量,图表的选择可能取决于哪些系列类型支持输入变量的数量。下表显示了每种系列类型所允许的变量数量。

标签可以用来扩展2个变量系列类型的价值。请看下面的例子,在同一个图表中使用了3个Bar系列类型的实例。

例子 

使用条形系列类型 

在最简单的形式下,这些数据产生了以下图表,按月份对信息进行分组。
 
[C#] 
foreach(Steema.TeeChart.Styles.Series tSeries in tChart1.Series) 
{tSeries.Marks.Visible = false;} 
tChart1.Header.Text = "Production results"; 
 
bar1.Add(300,"Jan"); 
bar1.Add(325,"Feb"); 
bar1.Add(287,"Mar"); 
bar1.Title = "Product10"; 
 
bar2.Add(175,"Jan"); 
bar2.Add(223,"Feb"); 
bar2.Add(241,"Mar"); 
bar2.Title = "Product12"; 
 
bar3.Add(461,"Jan"); 
bar3.Add(470,"Feb"); 
bar3.Add(455,"Mar"); 
bar3.Title = "Product14"; 
 
[VB.Net] 
Dim TSeries As Steema.TeeChart.Styles.Series 
For Each TSeries In TChart1.Series 
    TSeries.Marks.Visible = False 
Next 
TChart1.Header.Text = "Production results" 
 
Bar1.Add(300, "Jan") 
Bar1.Add(325, "Feb") 
Bar1.Add(287, "Mar") 
Bar1.Title = "Product10" 
 
Bar2.Add(175, "Jan") 
Bar2.Add(223, "Feb") 
Bar2.Add(241, "Mar") 
Bar2.Title = "Product12" 
 
Bar3.Add(461, "Jan") 
Bar3.Add(470, "Feb") 
Bar3.Add(455, "Mar") 
Bar3.Title = "Product14" 
或(按产品分组)

[C#] 
foreach(Steema.TeeChart.Styles.Series tSeries in tChart1.Series) 
{tSeries.Marks.Visible = false;} 
tChart1.Header.Text = "Production results"; 
 
bar1.Add(300,"Product10"); 
bar1.Add(175,"Product12"); 
bar1.Add(461,"Product14"); 
bar1.Title = "Jan"; 
 
bar2.Add(325,"Product10"); 
bar2.Add(223,"Product12"); 
bar2.Add(470,"Product14"); 
bar2.Title = "Feb"; 
 
bar3.Add(287,"Product10"); 
bar3.Add(241,"Product12"); 
bar3.Add(455,"Product14"); 
bar3.Title = "Mar"; 
 
[VB.Net] 
Dim TSeries As Steema.TeeChart.Styles.Series 
For Each TSeries In TChart1.Series 
    TSeries.Marks.Visible = False 
Next 
TChart1.Header.Text = "Production results" 
 
Bar1.Add(300, "Product10") 
Bar1.Add(175, "Product12") 
Bar1.Add(461, "Product14") 
Bar1.Title = "Jan" 
 
Bar2.Add(325, "Product10") 
Bar2.Add(223, "Product12") 
Bar2.Add(470, "Product14") 
Bar2.Title = "Feb" 
 
Bar3.Add(287, "Product10") 
Bar3.Add(241, "Product12") 
Bar3.Add(455, "Product14") 
Bar3.Title = "Mar" 
我们在上面的表格中增加了新的数值(库存)。 

表中的库存值通常高于月度产量的值,所以显示它们可以得到以下图表(这次是2D)。该图表使用线条系列来区分股票。
代码
在前面第一个例子的代码中加入以下内容。
[C#] 
line1.Add(600,"Jan"); 
line1.Add(715,"Feb"); 
line1.Add(676,"Mar"); 
line1.Title = "Product10 Stock";  
line1.Color = bar1.Color; 
 
line2.Add(245,"Jan"); 
line2.Add(270,"Feb"); 
line2.Add(315,"Mar"); 
line2.Title = "Product10 Stock";   
line2.Color = bar2.Color; 
 
line3.Add(800,"Jan"); 
line3.Add(755,"Feb"); 
line3.Add(835,"Mar"); 
line3.Title = "Product10 Stock";   
line3.Color = bar3.Color; 
 
[VB.Net] 
Line1.Add(600, "Jan") 
Line1.Add(715, "Feb") 
Line1.Add(676, "Mar") 
Line1.Title = "Product10 Stock" 
Line1.Color = Bar1.Color 
 
Line2.Add(245, "Jan") 
Line2.Add(270, "Feb") 
Line2.Add(315, "Mar") 
Line2.Title = "Product10 Stock" 
Line2.Color = Bar2.Color 
 
Line3.Add(800, "Jan") 
Line3.Add(755, "Feb") 
Line3.Add(835, "Mar") 
Line3.Title = "Product10 Stock" 
Line3.Color = Bar3.Color 
将数据添加到系列中 

大多数系列类型(除ADO.NET数据源教程8和函数教程7外)都使用24种通用重载的添加方法来添加数据。但也有一些例外情况,见下表。

请注意,除了ShapeSeries之外,所有特定的系列添加方法都被自动添加为通用添加方法的进一步重载,因此可以从这里访问(例如candleSeries1.Add(new DateTime(2002,11,27),100,400,200,300);)。

颜色 

在添加点的时候,可以手动为其添加颜色 
例子 

[C#] 
bar1.Add(50, "Tomatoes",Color.Tomato)。
[VB.Net] 
Bar1.Add(50, "Tomatoes", Color.Tomato) 
另外,你可以让TeeChart分配一个颜色。TeeChart将为每个新系列选择最多19种独特的、尚未使用的颜色,或者如果Series.ColorEach = True,则为每个新系列点选择颜色。
例子 
[C#] 
Random rnd = new Random(); 
bar1.ColorEach = true; 
for(int i = 0; i < 19; ++i) 
{ 
     int higher = i + 65; 
     char letter = (char) higher; 
     bar1.Add(rnd.Next(100),letter.ToString()); 
} 
[VB.Net] 
Dim i As Integer 
Bar1.ColorEach = True 
For i = 0 To 19 
    Bar1.Add(Rnd() * 100, Chr(i + 65)) 
Next 
一个透明的颜色可以被添加到一个点上,以便为ValueList中的值保留一个空间,而不在图表上显示。
例子 
[C#] 
bar1.Add(45, "My Transparent Bar", Color.Transparent)。
[VB.Net] 
Bar1.Add(45, "My Transparent Bar", Color.Transparent) 
从系列中删除数据点 

使用Series.Delete从一个系列中删除一个点。Series.Delete有两个重载。

public Void Delete(System.Int32) 
删除系列中的第n个点。
public Void Delete(System.Int32, System.Int32) 
从系列中的第n个点开始删除若干个点。
例子 
[C#] 
bar1.Delete(7,2); (从系列的第8个点开始删除两个点(索引从0开始)) 
[VB.Net] 
Bar1.Delete(7,2) (删除从第8个系列点开始的两个点(索引从零开始)) 
Series.Clear清除一个系列中的所有点。

将空点添加到系列中 

Series.Add有三个重载,允许你向系列中添加一个空点。
添加一个新的空(透明)点。
public Int32 Add() 

添加一个新的空点并指定文本。
public Int32 Add(System.String) 

在指定的X值处添加一个新的空点,并指定文字。
public Int32 Add(System.Double, System.String) 

上述第二个重载将在系列中添加一个空点,允许你为该点定义一个标签,但在系列中的该点留下一个断点。在线型系列的情况下,断点前的最后一个点不会与断点后的第一个点连接。 
例子 

[C#] 
line1.Add("Null Point")。
[VB.Net] 
Line1.Add("Null Point") 
请在TeeChart帮助文件中查找其他两个重载,了解它们的使用实例。

在一个图表上混合系列类型 

TeeChart Pro提供了一个空的Chart Canvas作为数据系列的背景。这意味着没有预定义的图表类型。你可以定义你需要的图表类型,作为你希望显示的系列类型的混合。由于一些系列类型的特殊性,在一个图表上将该系列类型与另一个系列类型混合在一起是不现实的。当你添加一个新的系列时,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 
系列被添加到SeriesList中,可以通过Index, 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个轴的对应部分相关的刻度(见教程中的额外轴)。

连接系列 

你可以使用一个系列作为另一个系列的数据源。这可以在图表编辑器中通过设置第二个系列的数据源来实现。进入 "系列 "标签,数据源页面。选择 "函数 "作为数据源类型。会出现两个列表框,可用系列和选定系列。选择你希望用作当前系列的数据源的系列,然后在上面的组合框中,题为 "函数:",选择 "平均 "作为函数类型,并点击 "应用 "按钮。请注意,任何系列,以这种方式,可以被定义为任何其他系列的函数,函数类型可以是函数组合框中的任何列表。要通过代码做同样的事情,请看下面。

[C#] 
Steema.TeeChart.Functions.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() 
关于如何使用TeeChart函数的更多信息,请参见教程7--使用函数工作。

改变系列顺序 

使用图表编辑器,改变系列顺序非常容易。进入编辑器的前页,突出显示你想移动的系列。使用右边的箭头按钮,在系列顺序中向上或向下移动系列。系列顺序将决定该系列在图表中相对于其他系列的相对显示位置。将一个系列设置为 "Active=False "将从图表中隐藏该系列,但保持其数据内容不变。
要通过代码改变系列顺序,请使用Series.Exchange。

[C#] 
tChart1.Series.Exchange(0, 1); //用Series(1)改变系列(0)的索引顺序。
[VB.Net] 
TChart1.Series.Exchange(0, 1) '按照索引顺序用Series(1)改变Series(0)。
*注意。在交换系列后,系列的索引将被改变。因此,如果重新运行代码,上面的这行代码将永久地交换两个系列'0'和'1',因为0变成了1,1变成了0。

系列值列表 

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

访问系列值 
你可以访问列表中的任何值。
例子 

[C#] 
MessageBox.Show(bar1.YValues[3].ToString()); //显示一个BarSeries的第4点的值(索引从0开始)。
[VB.Net] 
MsgBox(Bar1.YValues(3)) '显示一个BarSeries的第4点的值(指数从0开始)。
以这种方式访问的值可用于在系列数据上设置陷阱。
[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 
同样的值可以通过一些系列方法和一些图表事件所使用的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子程序来修改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  
系列事件 

上一节介绍了系列事件的一些用法。本节展示了一些额外的用途。
OnClickSeries 
你可以使用OnClickSeries事件来获取关于系列的几乎所有信息(见 "访问系列值 "一节)。

这些例子适用于具有Datetime数据的系列,例如,这些测试值可用于以下事件的例子。

[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 
OnGetSeriesPointerStyle 

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

如果指针比上一次高,就画一个上三角,如果低,就画一个下三角,等等。

[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 

使用OnGetSeriesMark事件,在运行时修改Mark的内容。下面的代码根据相对于最后一个的值来改变MarkText的内容。
TeeChart支持通过DragMarks工具在重叠的情况下拖动Mark。

[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已加入在线订购,现在抢购可立享优惠!

如果您对该图表控件感兴趣,欢迎加入图表控件QQ交流群:740060302

关注慧聚IT微信公众号☟☟☟,了解产品的最新动态及最新资讯。

慧聚IT

标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn

文章转载自:

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP