【207】WinForm Chart類


目錄:

  1. 在工具箱中找到 Chart 控件並使用
  2. 設置 Chart 屬性
  3. Chart 類說明

        先簡單說一下,從圖中可以看到一個 Chart 可以繪制多個 ChartArea,每個 ChartArea 都可以繪制多條 Series。ChartArea 就是就是繪圖區域,可以有多個 ChartArea 疊加在一起,Series 是畫在 ChartAarea 上的,Series 英文意思是“序列、連續”,其實就是數據線,它可以是曲線、點、柱形、條形、餅圖...可以注意該 Chart 當數據非常多的時候可以通過鼠標選擇查看區域,進一步拖拽橫縱向滾動條來縮小曲線圖查看。

Chart.ChartAreas 屬性:獲取用於存儲 ChartArea 對象的只讀 ChartAreaCollection 對象。ChartArea 對象用於繪制一個或多個圖表。
Chart.Series 屬性:獲取 SeriesCollection 對象。Series 對象存儲 DataPoint 的對象,以及數據特性。

參考:C# MSChart圖表控件使用介紹


1. 在工具箱中找到 Chart 控件並使用

       

2. 設置 Chart 屬性

  設置MSChart控件屬性方法兩種:1)代碼中設置屬性;2)屬性表設置屬性

  1)代碼中設置屬性:

            ////////////////////ChartArea1屬性設置///////////////////////////
            //設置網格的樣式
            chart1.ChartAreas["ChartArea1"].AxisX.MajorGrid.LineColor = Color.LightGray;
            chart1.ChartAreas["ChartArea1"].AxisY.MajorGrid.LineColor = Color.LightGray;
            chart1.ChartAreas["ChartArea1"].AxisX.MajorGrid.IntervalOffset = 1;
            chart1.ChartAreas["ChartArea1"].AxisY.MajorGrid.IntervalOffset = 0;
            chart1.ChartAreas["ChartArea1"].AxisX.MajorGrid.Interval = 2;
            chart1.ChartAreas["ChartArea1"].AxisY.MajorGrid.Interval = 10;
            chart1.ChartAreas["ChartArea1"].AxisX.MajorGrid.LineDashStyle = ChartDashStyle.Dash;
            chart1.ChartAreas["ChartArea1"].AxisY.MajorGrid.LineDashStyle = ChartDashStyle.DashDot;
            //設置坐標軸樣式
            chart1.ChartAreas["ChartArea1"].AxisX.Title = "隨機數";
            chart1.ChartAreas["ChartArea1"].AxisY.Title = "數值";
            chart1.ChartAreas[0].AxisX.ArrowStyle = AxisArrowStyle.Lines;
            chart1.ChartAreas[0].AxisY.IntervalOffset = 10;
            chart1.ChartAreas[0].AxisY.Interval = 20;
            chart1.ChartAreas[0].AxisY.Minimum = -10;
            //啟用3D顯示
            chart1.ChartAreas["ChartArea1"].Area3DStyle.Enable3D = false;
            //設置圖表背景
            chart1.ChartAreas[0].BackColor = Color.FromArgb(0x87, 0xCC, 0xFF, 0xFF);
            chart1.ChartAreas[0].BackGradientStyle = GradientStyle.TopBottom;
            chart1.ChartAreas[0].ShadowColor = Color.Gainsboro;
            chart1.ChartAreas[0].ShadowOffset = 5;
            
            //////////////////////Series屬性設置///////////////////////////
            //設置顯示類型-線型
            chart1.Series["隨機數"].ChartType = SeriesChartType.Spline;
            //設置坐標軸Value顯示類型
            chart1.Series["隨機數"].XValueType = ChartValueType.Int32;
            //是否顯示標簽的數值
            chart1.Series["隨機數"].IsValueShownAsLabel = true;
            //設置標記圖案
            chart1.Series["隨機數"].MarkerStyle = MarkerStyle.Circle;
            chart1.Series["隨機數"].MarkerSize = 8;
            chart1.Series["隨機數"].MarkerColor = Color.FromArgb(0x99, 0xFF, 0x00);
            chart1.Series["隨機數"].MarkerBorderColor = Color.Green;
            chart1.Series["隨機數"].MarkerBorderWidth = 2;
            //設置圖案顏色
            chart1.Series["隨機數"].Color = Color.Green;
            //設置圖案的寬度
            chart1.Series["隨機數"].BorderWidth = 2;
            chart1.Series[0].BorderDashStyle = ChartDashStyle.Dash;
            chart1.Series[0].BorderColor = Color.Red;
            chart1.Series[0].LabelAngle = 45;
            chart1.Series[0].LabelBackColor = Color.Aqua;
            chart1.Series[0].LabelBorderColor = Color.Black;

            //添加隨機數
            Random rd = new Random();
            for (int i = 1; i < 20; i++)
            {
                //chart1.Series["隨機數"].Points.AddXY(i, rd.Next(100));
                chart1.Series["隨機數"].Points.AddY(rd.Next(100));
            }

            for (int i = 0; i < chart1.Series[0].Points.Count; i++)
            {
                if (chart1.Series[0].Points[i].YValues[0] >= 67.0)
                    chart1.Series[0].Points[i].MarkerBorderColor = Color.DeepPink;
                else if(chart1.Series[0].Points[i].YValues[0] >= 33.3)
                    chart1.Series[0].Points[i].MarkerBorderColor = Color.DarkOrange;
                else
                    chart1.Series[0].Points[i].MarkerBorderColor = Color.Gray;
            }

  2)屬性中設置屬性:

  步驟1:設置ChartArea屬性

  點擊ChartAreas(集合)后面的小按鈕進入對話框,設置對應的屬性

  步驟2:設置Series屬性
  點擊Series(集合)后面的小按鈕進入對話框,設置對應屬性

3. Chart 類說明

  • ChartAreas:獲取用於存儲 ChartArea 對象的只讀 ChartAreaCollection 對象。
    • ChartAreaCollection 類:表示 ChartArea 對象的集合。
      • Count:獲取 Collection<T> 中實際包含的元素數。
      • Item[Int32]:獲取或設置指定索引處的元素。
      • Item[String]:獲取或設置具有指定名稱的圖表元素。
    • ChartArea 類:表示圖表圖像上的圖表區域。
      • AxisX:獲取或設置表示主 X 軸的 Axis 對象。
      • AxisY:獲取或設置表示主 Y 軸的 Axis 對象。
      • BackColor:獲取或設置 ChartArea 對象的背景色。
      • BackGradientStyle:獲取或設置圖表區域的背景漸變方向,還確定是否使用漸變。
      • ShadowColor:獲取或設置 ChartArea 對象的陰影顏色。
      • ShadowOffset:獲取或設置 ChartArea 對象的陰影偏移量(以像素為單位)。
    • Axis 類:提供管理 Chart 控件中的軸的方法和屬性。
      • MajorGrid:獲取或設置用於設置軸的主要網格線屬性的 Grid 對象。
      • Title:獲取或設置軸的標題。
      • ArrowStyle:獲取或設置二維軸的箭頭樣式;此樣式不適用於三維圖表區域。
      • Interval:獲取或設置軸的間隔。(坐標軸數據間隔
      • IntervalOffset:獲取或設置軸的間隔偏移量。(坐標軸第一個數據距離原點的間隔
      • Maximum:獲取或設置軸的最大值。
      • Minimum:獲取或設置軸的最小值。
    • Grid 類:提供用於管理 Axis 對象的主要和次要網格的方法和屬性。
      • Interval:獲取或設置主要網格線或次要網格線之間的間隔。(相鄰兩個網格線間的間隔,int
      • IntervalType:獲取或設置主要網格線或次要網格線的間隔類型。(計算單位
      • IntervalOffset:獲取或設置網格線的偏移量。(第一個網格線偏移坐標軸的間隔,int
      • IntervalOffsetType:獲取或設置主要網格線和次要網格線的間隔偏移量類型。(計算單位
      • LineColor:獲取或設置網格線顏色。
      • LineDashStyle:獲取或設置網格的線型。
      • LineWidth:獲取或設置主要網格線和次要網格線的線條寬度。
  • Series:獲取 SeriesCollection 對象。
    • SeriesCollection 類:表示 Series 對象的集合。
      • Count:獲取 Collection<T> 中實際包含的元素數。
      • Item[Int32]:獲取或設置指定索引處的元素。
      • Item[String]:獲取或設置具有指定名稱的圖表元素。
    • Series 類:存儲數據點和序列特性。
      • ChartType:獲取或設置序列的圖表類型。
        • SeriesChartType 枚舉:指定 Series 的圖表類型。
          • Area:面積圖類型。
          • Line:折線圖類型。
          • Spline:樣條圖類型。(光滑曲線
          • Column:柱形圖類型。
          • Pie:餅圖類型。
          • Doughnut:圓環圖類型。
      • XValueType:獲取或設置沿 X 軸繪制的值類型。
      • YValueType:獲取或設置序列所存儲的數據點中的 Y 值數據類型。
        • ChartValueType 枚舉:指定各種圖表屬性的值類型。
          • Auto:屬性類型由圖表控件自動設置。
          • Int32:Int32 值。
          • DateTime:一個 DateTime 值。
          • Time:[DateTime] 值的時間部分。
      • IsValueShownAsLabel:獲取或設置一個標志,該標志指示是否在標簽上顯示數據點的值。
      • Points:獲取 DataPointCollection 對象。(數據表中的數據點
        • DataPointCollection 類:表示 DataPoint 對象的集合。
          • Count:獲取 Collection<T> 中實際包含的元素數。
          • Item:獲取或設置指定索引處的元素。(針對每一個 DataPoint 對象
          • AddXY(Double, Double):使用指定的 X 值和 Y 值將 DataPoint 對象添加到集合末尾。
            ///////實現將時間數據賦值到 X 軸///////
            //第一步:將 X 軸數值類型設置為 Time
            chart1.Series[0].XValueType = ChartValueType.Time;
            
            //第二步:將 DateTime 數據轉為 double 類型
            DateTime dt = DateTime.Parse("2000/8/8  12:08:01");
            double d = Double.Parse(dtzh.Rows[i]["Fo"].ToString());
            chart1.Series[0].Points.AddXY(dt.ToOADate(), d);
            
          • AddY(Double):使用指定的 Y 值將 DataPoint 對象添加到集合末尾。
          • Clear:從 Collection<T> 中移除所有元素。
          • Insert:將元素插入 Collection<T> 的指定索引處。
          • InsertXY:插入具有指定 X 值和一個或多個指定 Y 值的數據點。
          • InsertY:插入具有一個或多個指定 Y 值的數據點。
          • Remove:從 Collection<T> 中移除特定對象的第一個匹配項。
          • RemoveAt:移除 Collection<T> 的指定索引處的元素。
        • DataPoint 類:表示存儲在 DataPointCollection 類中的數據點。
          • XValue:獲取或設置數據點的 X 值。
          • YValues:獲取或設置數據點的 Y 值。(數組的形式,值一般是[0]
          • Color:獲取或設置數據點的顏色。
          • BorderColor:獲取或設置數據點的邊框顏色。
      • MarkerStyle:獲取或設置標記樣式。
        • MarkerStyle 枚舉:獲取或設置標記樣式。
          • MarkerStyle 枚舉:指定標記的樣式。
          • None:不為序列或數據點顯示任何標記。
          • Square:顯示正方形標記。
          • Circle:顯示圓形標記。
          • Diamond:顯示菱形標記。
          • Triangle:顯示三角形標記。
          • Cross:顯示十字形標記。
      • MarkerColor:獲取或設置標記顏色。(數據點
      • MarkerSize:獲取或設置標記的大小。
      • MarkerBorderColor:獲取或設置標記的邊框顏色。
      • MarkerBorderWidth:獲取或設置標記的邊框寬度。

      • Color:獲取或設置數據點的顏色。(數據點和連接的線
      • BorderWidth:獲取或設置數據點的邊框寬度。
      • BorderDashStyle:獲取或設置數據點的邊框樣式。
      • BorderColor:獲取或設置數據點的邊框顏色。
      • EmptyPointStyle:獲取或設置標記為空的點的繪制樣式。

      • LabelBackColor:獲取或設置數據點標簽的背景色。
      • LabelBorderColor:獲取或設置數據點標簽的邊框顏色。
      • LabelBorderDashStyle:獲取或設置標簽的邊框樣式。
      • LabelBorderWidth:獲取或設置標簽的邊框寬度。

      • IsVisibleInLegend:獲取或設置一個標志,該標志指示是否在圖例中顯示項。
      • LegendText:獲取或設置圖例中項的文本。
  • Titles:存儲 Chart 控件使用的所有 Title 對象。
    • TitleCollection 類:表示 Title 對象的集合。
      • Count:獲取 Collection<T> 中實際包含的元素數。
      • Item[Int32]:獲取或設置指定索引處的元素。
      • Add(T):將對象添加到 Collection<T> 的結尾處。
      • Add(String):將具有指定名稱的 Title 對象添加到集合的末尾。
      • Clear:從 Collection<T> 中移除所有元素。
      • ClearItems:從 Collection<T> 中移除所有元素。
    • Title 類:表示整個圖表圖像的標題。
      • Alignment:獲取或設置標題的對齊方式。
      • BackColor:獲取或設置標題的背景色。
      • Font:獲取或設置標題的字體。
      • ForeColor:獲取或設置標題文本的顏色。
      • ShadowColor:獲取或設置標題的陰影顏色。
      • ShadowOffset:獲取或設置標題的陰影偏移量(以像素為單位)。
      • Position:獲取或設置可用於獲取或設置標題位置的 ElementPosition 對象。
      • Text:獲取或設置標題的文本。
      • TextOrientation:獲取或設置標題中文本的方向。
      • TextStyle:獲取或設置標題的文本樣式。
  • Legends:存儲 Chart 控件使用的所有 Legend 對象。
    • LegendCollection 類:表示 Legend 對象的集合。
      • Count:獲取 Collection<T> 中實際包含的元素數。
      • Item[Int32]:獲取或設置指定索引處的元素。
      • Item[String]:獲取或設置具有指定名稱的圖表元素。
    • Legend 類表示圖表圖像的圖例。
      • Alignment:獲取或設置圖例的對齊方式。
        • StringAlignment 枚舉指定文本字符串相對於其布局矩形的對齊方式。
          • Near:如果圖例停靠到頂部或底部,則 Near 位於左側;如果圖例停靠到左側或右側,則 Near 位於頂部。
          • Center:總是將圖例垂直或水平居中。
          • Far:如果圖例停靠到頂部或底部,則 Far 位於右側;如果圖例停靠到左側或右側,則 Far 位於底部。
      • Title:獲取或設置圖例標題的文本。
      • ShadowColor:獲取或設置圖例的陰影顏色。
      • ShadowOffset:獲取或設置圖例的陰影偏移量(以像素為單位)。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM