圖表控件MsChart使用demo

chart 控件主要有 Titles 標題集合  Chart Area圖形顯示區域 Series圖表集合 Legends圖列的集合es6

(1)  經常使用事件:dom

1. Series1.Points.DataBind()綁定數據點集合,若是要在一個MSChart控件的一個繪圖區(ChartArea)內添加多個不一樣數據源的圖表,就用這個主動綁定數據集合的方法。能夠將表中指定字段的值綁定到指定的座標軸上。字體

2. MSChart1.DataBind()給整個MSChart綁定一個數據源,該MSChart中的圖表所有能夠使用該數據源做爲統計來源es5

(2)MSChart的元素組成,最經常使用的屬性包括:spa

ChartAreas:增長多個繪圖區域,每一個繪圖區域包含獨立的圖表組、數據源,用於多個圖表類型在一個繪圖區不兼容時。code

AlignmentOrientation:圖表區對齊方向,定義兩個繪圖區域間的對齊方式。orm

AlignmentStyle:圖表區對齊類型,定義圖表間用以對其的元素。blog

AlignWithChartArea:參照對齊的繪圖區名稱。three

InnerPlotPosition:圖表在繪圖區內的位置屬性。事件

Auto:是否自動對齊。

Height:圖表在繪圖區內的高度(百分比,取值在0-100)

Width:圖表在繪圖區內的寬度(百分比,取值在0-100)

X,Y:圖表在繪圖區內左上角座標

Position:繪圖區位置屬性,同InnerPlotPosition。

Name:繪圖區名稱。

Axis:座標軸集合

Title:座標軸標題

TitleAlignment:座標軸標題對齊方式

Interval:軸刻度間隔大小

IntervalOffset:軸刻度偏移量大小

MinorGrid:次要輔助線

MinorTickMark:次要刻度線

MajorGrid:主要輔助線

MajorTickMark:主要刻度線

DataSourceID:MSChart的數據源。

Legends:圖例說明。

Palette:圖表外觀定義。

 

(3)Series:最重要的屬性,圖表集合,就是最終看到的餅圖、柱狀圖、線圖、點圖等構成的集合;能夠將多種相互兼容的類型放在一個繪圖區域內,造成複合圖。

IsValueShownAsLabel:是否顯示數據點標籤,若是爲true,在圖表中顯示每個數據值

Label:數據點標籤文本

LabelFormat:數據點標籤文本格式

LabelAngle:標籤字體角度

Name:圖表名稱

Points:數據點集合

XValueType:橫座標軸類型

YValueType:縱座標軸類型

XValueMember:橫座標綁定的數據源(若是數據源爲Table,則填寫橫座標要顯示的字段名稱)

YValueMembers:縱座標綁定的數據源(若是數據源爲Table,則填寫縱座標要顯示的字段名稱,縱座標能夠有兩個)

ChartArea:圖表所屬的繪圖區域名稱

ChartType:圖表類型(柱形、餅形、線形、點形等)

Legend:圖表使用的圖例名稱

Titles:標題集合。

width:MSChart的寬度。

height:MSChart的高度。

 

4.例子

 

Public Class Form1

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim dt As DataTable
        dt = CreateDataTable()

        SetMSChartStyle()
        ConvertChart(dt)

        'databind
        Chart1.DataBind()
    End Sub

    Private Function CreateDataTable() As DataTable
        Dim dt As New DataTable
        'Add three columns to the DataTable
        dt.Columns.Add("Date") 'X
        dt.Columns.Add("Series1") 'data1
        dt.Columns.Add("Series2") 'data2
        dt.Columns.Add("Series3") 'data1
        dt.Columns.Add("Series4") 'data2
        dt.Columns.Add("Series5") 'data1
        dt.Columns.Add("Series6") 'data2

        Dim dr As DataRow
        'Add rows to the table which contains some random data for demonstration
        Dim rnd As New Random
        Dim i As Double
        For i = 10 To 24 Step 0.2
            dr = dt.NewRow()
            dr("Date") = i
            dr("Series1") = 3731 + rnd.Next(0, 1000)
            dr("Series2") = 4101 + rnd.Next(0, 1000)
            dr("Series3") = 3600 + rnd.Next(0, 1000)
            dr("Series4") = 4765 + rnd.Next(0, 1000)
            dr("Series5") = 3742 + rnd.Next(0, 1000)
            dr("Series6") = 4321 + rnd.Next(0, 1000)
            dt.Rows.Add(dr)
        Next

        CreateDataTable = dt
    End Function

    Private Sub ConvertChart(dt As DataTable)
        For Each dr As DataRow In dt.Rows
            Dim s As Double = dr("Date")
            Chart1.Series("Series1").Points.AddXY(s, dr("Series1"))
            Chart1.Series("Series2").Points.AddXY(s, dr("Series2"))
            Chart1.Series("Series3").Points.AddXY(s, dr("Series3"))
            Chart1.Series("Series4").Points.AddXY(s, dr("Series4"))
            Chart1.Series("Series5").Points.AddXY(s, dr("Series5"))
            Chart1.Series("Series6").Points.AddXY(s, dr("Series6"))
        Next
    End Sub


    '/ <summary>
    '/ 設置mschart樣式
    '/ </summary>
    Private Sub SetMSChartStyle()
        ' 座標軸設置
        Chart1.ChartAreas(0).AxisY.IsMarginVisible = False
        Chart1.ChartAreas(0).AxisY.LabelStyle.Enabled = False
        Chart1.ChartAreas(0).AxisX.IsMarginVisible = False
        Chart1.ChartAreas(0).AxisX.LabelStyle.Enabled = False

        '設置當前X軸Label自動設置格式 = 關閉
        Chart1.ChartAreas(0).AxisX.LabelAutoFitStyle = DataVisualization.Charting.LabelAutoFitStyles.None

        ''設置當前X軸Label的雙行顯示格式= 關閉,這個會影響到Y軸線條的顯示
        Chart1.ChartAreas(0).AxisX.LabelStyle.IsStaggered = False
        ''.設置當前X軸Label的顯示間隔週期=1 (1個項目) (=2的意思: 間隔2個項目顯示...以此類推)
        'Chart1.ChartAreas(0).AxisX.LabelStyle.Interval = 1
        'X 軸座標最大最小值
        Chart1.ChartAreas(0).AxisX.Minimum = 0
        Chart1.ChartAreas(0).AxisX.Maximum = 24

        'X 軸座標最大最小值
        Chart1.ChartAreas(0).AxisY.Minimum = 0
        Chart1.ChartAreas(0).AxisY.Maximum = 5000

        ' 座標軸刻度線不延長出來設置
        Chart1.ChartAreas(0).AxisX.MajorTickMark.Enabled = False
        Chart1.ChartAreas(0).AxisY.MajorTickMark.Enabled = False

        'X 次要輔助線設置
        Chart1.ChartAreas(0).AxisX.MinorGrid.Enabled = True
        'X 次要輔助線間距
        Chart1.ChartAreas(0).AxisX.MinorGrid.Interval = 0.5
        'X 次要輔助線顏色
        Chart1.ChartAreas(0).AxisX.MinorGrid.LineColor = Color.LightGray
        Chart1.ChartAreas(0).AxisX.MinorGrid.LineDashStyle = DataVisualization.Charting.ChartDashStyle.Dash

        'Y 次要輔助線設置
        Chart1.ChartAreas(0).AxisY.MinorGrid.Enabled = True
        'Y 次要輔助線間距
        Chart1.ChartAreas(0).AxisY.MinorGrid.Interval = 500
        'Y 次要輔助線顏色
        Chart1.ChartAreas(0).AxisY.MinorGrid.LineColor = Color.LightGray
        Chart1.ChartAreas(0).AxisY.MinorGrid.LineDashStyle = DataVisualization.Charting.ChartDashStyle.Dash

        'X 主要輔助線設置
        Chart1.ChartAreas(0).AxisX.MajorGrid.Enabled = True
        'X 主要輔助線間距
        Chart1.ChartAreas(0).AxisX.MajorGrid.Interval = 5
        'X 主要輔助線顏色
        Chart1.ChartAreas(0).AxisX.MajorGrid.LineColor = Color.Black
        Chart1.ChartAreas(0).AxisX.MajorGrid.LineDashStyle = DataVisualization.Charting.ChartDashStyle.Solid

        'Y 主要輔助線設置
        Chart1.ChartAreas(0).AxisY.MajorGrid.Enabled = True
        'Y 主要輔助線間距
        Chart1.ChartAreas(0).AxisY.MajorGrid.Interval = 1000
        'Chart1.ChartAreas(0).AxisY.MajorGrid.IntervalOffset = 1000
        'Y 主要輔助線顏色
        Chart1.ChartAreas(0).AxisY.MajorGrid.LineColor = System.Drawing.Color.FromArgb(CType(CType(64, Byte), Integer), CType(CType(0, Byte), Integer), CType(CType(64, Byte), Integer))
        Chart1.ChartAreas(0).AxisY.MajorGrid.LineDashStyle = DataVisualization.Charting.ChartDashStyle.Solid

        '座標主要輔助線刻度間距
        Chart1.ChartAreas(0).AxisX.Interval = 1
        Chart1.ChartAreas(0).AxisY.Interval = 1000

        '邊框樣式設置
        Chart1.ChartAreas(0).BorderColor = Color.Black
        Chart1.ChartAreas(0).BorderDashStyle = DataVisualization.Charting.ChartDashStyle.Solid
        Chart1.ChartAreas(0).BorderWidth = 1

        '圖例文字
        'Chart1.Series["Series"].LegendText = "當前"

        '圖例位置、字體設置;座標軸位置設定
        'Chart1.Legends[0].Position = new ElementPosition(10, 10, 88, 7)
        'Chart1.Legends[0].Font = new Font("宋體", 9)
        'Chart1.ChartAreas[0].InnerPlotPosition = new ElementPosition(1, 1, 1, 1)
    End Sub


    Private Sub CmbYMax_SelectedValueChanged(sender As Object, e As EventArgs) Handles CmbYMax.SelectedValueChanged
        Chart1.ChartAreas(0).AxisY.Maximum = CmbYMax.Text
    End Sub

    Private Sub CmbYMin_SelectedValueChanged(sender As Object, e As EventArgs) Handles CmbYMin.SelectedValueChanged
        Chart1.ChartAreas(0).AxisY.Minimum = CmbYMin.Text
    End Sub

    Private Sub CmbXMin_SelectedValueChanged(sender As Object, e As EventArgs) Handles CmbXMin.SelectedValueChanged
        Chart1.ChartAreas(0).AxisX.Minimum = Convert.ToDouble(CmbXMin.Text)
    End Sub

    Private Sub CmbXMax_SelectedValueChanged(sender As Object, e As EventArgs) Handles CmbXMax.SelectedValueChanged
        Chart1.ChartAreas(0).AxisX.Maximum = Convert.ToDouble(CmbXMax.Text)
    End Sub

    Private Sub CheckBox_1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox_1.CheckedChanged, CheckBox_6.CheckedChanged, CheckBox_5.CheckedChanged, CheckBox_4.CheckedChanged, CheckBox_3.CheckedChanged, CheckBox_2.CheckedChanged
        If (sender.Name.Split("_").length = 2) Then
            Dim seriesName As String = "Series" + sender.Name.Split("_")(1)
            If sender.Checked = True Then
                Chart1.Series(seriesName).Enabled = True
            Else
                Chart1.Series(seriesName).Enabled = False
            End If
        End If
    End Sub
End Class
相關文章
相關標籤/搜索