教學課程:使用事件來自訂圖表 (Chart 控制項)

Visual Studio 2010

此教學課程示範如何使用事件來自訂圖表。您要在最大資料點加入自訂標記來反白顯示今年銷售量最高的銷售人員。

若要完成此教學課程,您必須先完成教學課程:將圖表資料繫結至資料庫中的教學課程

開始前,請在 ASP.NET 應用程式中開啟程式碼後置檔案,或在 Windows Form 應用程式中切換到程式碼檢視。

在程式碼檔案頂端加入 Chart 命名空間,如下所示。

' For Windows Forms
Imports System.Windows.Forms.DataVisualization.Charting
' For ASP.NET
Imports System.Web.UI.DataVisualization.Charting

加入 Chart.PostPaint 事件的事件處理常式。

在 Windows Form 中,您是在表單建構函式中執行此動作,就在 InitializeComponent 方法之後。在 ASP.NET 中,則是在自動建立的 Page_Load 事件處理常式方法中執行此動作。

AddHandler Me.Chart1.PostPaint, AddressOf Chart1_PostPaint

接下來,為您剛登錄的事件處理常式加入方法定義,在類別定義中加入下列程式碼即可完成這個動作。

Private Sub Chart1_PostPaint(ByVal sender As Object, ByVal e As ChartPaintEventArgs) 
End Sub

void Chart1_PostPaint(object sender, ChartPaintEventArgs e)
{
}

現在要加入可以反白顯示今年銷售量最高之銷售人員的自訂程式碼。若要執行這個步驟,請將下列程式碼加入到您剛建立的 Chart1_PostPaint 事件處理常式,儲存檔案,然後執行應用程式。

' Make sure all series have been drawn before proceeding 
If TypeOf e.ChartElement Is Series AndAlso DirectCast(e.ChartElement, Series).Name = "Series2" Then
Dim s As Series = e.Chart.Series(0)
Dim cg As ChartGraphics = e.ChartGraphics
Dim max As Double = s.Points.FindMaxByValue().YValues(0)

' Highlight the maximum sales this year
For i As Integer = 0 To s.Points.Count - 1
If s.Points(i).YValues(0) = max Then
' Get relative coordinates of the data point
Dim pos As System.Drawing.PointF = System.Drawing.PointF.Empty
pos.X = CSng(cg.GetPositionFromAxis("ChartArea1", AxisName.X, i+1))
pos.Y = CSng(cg.GetPositionFromAxis("ChartArea1", AxisName.Y, max))

' Convert relative coordinates to absolute coordinates.
pos = cg.GetAbsolutePoint(pos)

' Draw concentric circles at the data point
For radius As Integer = 10 To 39 Step 10
cg.Graphics.DrawEllipse(System.Drawing.Pens.Red, _
CSng(pos.X - radius / 2), _
CSng(pos.Y - radius / 2), radius, radius)
Next
End If
Next
End If

阿倫 發表在 痞客邦 PIXNET 留言(0) 人氣()