翻譯|使用教程|編輯:凌霄漢|2022-03-22 17:02:43.950|閱讀 221 次
概述:本次TeeChart Pro .NET使用教程將為大家?guī)砣绾问褂孟盗蓄愋汀?/p>
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
本文將接著上一篇文章未講完的部分給大家繼續(xù)講解。
TeeChart Pro 提供一個空白圖表畫布作為數(shù)據(jù)系列的背景。 這意味著沒有預定義圖表類型。 您將所需的圖表類型定義為您希望顯示的系列類型的組合。 由于某些系列類型的特殊性,在圖表上將該系列類型與另一種混合是不切實際的。 當您到達以添加新系列時,TeeChart 可以幫助您在圖表庫中灰顯不合適的系列類型。 您可以在一張圖表中放入的系列數(shù)量沒有實際限制。
使用 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 屬性修改名稱。
添加到圖表的系列將自動將左軸和下軸作為參考軸。 您可以通過選擇相關系列的系列常規(guī)頁面來更改圖表編輯器中的參考軸。 有 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 個系列可能與每個軸相關聯(lián)。 TeeChart 將決定適合與軸匹配的系列的最佳比例,但您可以自己更改軸比例。 可以添加額外的軸; 他們將從前 4 個軸復制與其對應的比例尺。
您可以使用一個系列作為另一個系列的數(shù)據(jù)源。 這可以通過圖表編輯器通過設置第二個系列的數(shù)據(jù)源來完成。 轉(zhuǎn)到系列選項卡,數(shù)據(jù)源頁面。 選擇“函數(shù)”作為數(shù)據(jù)源類型。 將出現(xiàn)兩個列表框,可用系列和選定系列。 選擇您希望用作當前系列的數(shù)據(jù)源的系列,然后在上面的組合框中,標題為 Functions:,選擇 Average 作為函數(shù)類型,然后單擊 Apply 按鈕。 請注意,以這種方式,任何系列都可以定義為任何其他系列的函數(shù),并且函數(shù)類型可以是函數(shù)組合框中可用的任何列表。 要通過代碼執(zhí)行相同的操作:
[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()
使用圖表編輯器更改系列順序非常容易。 轉(zhuǎn)到編輯器的金喜正規(guī)買球并突出顯示您要移動的系列。 使用右側(cè)的箭頭按鈕按系列順序向上或向下移動系列。 系列順序?qū)Q定圖表中系列相對于其他系列的相對顯示位置。 將系列設置為“Active=False”將從圖表中隱藏系列,但保持其數(shù)據(jù)內(nèi)容不變。
[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
以這種方式訪問的值可用于在系列數(shù)據(jù)上設置陷阱:
[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
此代碼根據(jù)用戶的鼠標點擊修改 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
調(diào)用 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
上一節(jié)介紹了 Series 事件的一些用法。 本節(jié)展示了一些額外的用途。
您可以使用 OnClickSeries 事件來獲取有關系列的幾乎所有信息。
這些示例適用于具有日期時間數(shù)據(jù)的系列,例如這些測試值可用于以下事件示例:
[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 事件在運行時修改標記內(nèi)容。 以下代碼根據(jù)相對于最后一個的值改變 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 個事件產(chǎn)生的圖表外觀是:
如果您想了解TeeChart for .NET正版價格,歡迎咨詢
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務必注明出處、不得修改原文相關鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn