加標題:
1 using System; 2 using System.Windows.Forms; 3 using DevExpress.XtraCharts; 4 // ... 5 6 namespace SideBySideBar2D { 7 public partial class Form1 : Form { 8 public Form1() { 9 InitializeComponent(); 10 } 11 12 private void Form1_Load(object sender, EventArgs e) { 13 // Create an empty chart. 14 ChartControl sideBySideBarChart = new ChartControl(); 15 16 // Create the first side-by-side bar series and add points to it. 17 Series series1 = new Series("Side-by-Side Bar Series 1", ViewType.Bar); 18 series1.Points.Add(new SeriesPoint("A", 10)); 19 series1.Points.Add(new SeriesPoint("B", 12)); 20 series1.Points.Add(new SeriesPoint("C", 14)); 21 series1.Points.Add(new SeriesPoint("D", 17)); 22 23 // Create the second side-by-side bar series and add points to it. 24 Series series2 = new Series("Side-by-Side Bar Series 2", ViewType.Bar); 25 series2.Points.Add(new SeriesPoint("A", 15)); 26 series2.Points.Add(new SeriesPoint("B", 18)); 27 series2.Points.Add(new SeriesPoint("C", 25)); 28 series2.Points.Add(new SeriesPoint("D", 33)); 29 30 // Add the series to the chart. 31 sideBySideBarChart.Series.Add(series1); 32 sideBySideBarChart.Series.Add(series2); 33 34 // Hide the legend (if necessary). 35 sideBySideBarChart.Legend.Visibility = DevExpress.Utils.DefaultBoolean.False; 36 37 // Rotate the diagram (if necessary). 38 ((XYDiagram)sideBySideBarChart.Diagram).Rotated = true; 39 40 // Add a title to the chart (if necessary). 41 ChartTitle chartTitle1 = new ChartTitle(); 42 chartTitle1.Text = "Side-by-Side Bar Chart"; 43 sideBySideBarChart.Titles.Add(chartTitle1); 44 45 // Add the chart to the form. 46 sideBySideBarChart.Dock = DockStyle.Fill; 47 this.Controls.Add(sideBySideBarChart); 48 } 49 50 } 51 }
1 using DevExpress.XtraCharts; 2 using System; 3 using System.Collections.Generic; 4 using System.ComponentModel; 5 using System.Data; 6 using System.Drawing; 7 using System.Linq; 8 using System.Text; 9 using System.Windows.Forms; 10 11 namespace DXApplication1chart1 12 { 13 public partial class Form1 : DevExpress.XtraEditors.XtraForm 14 { 15 public Form1() 16 { 17 InitializeComponent(); 18 } 19 20 private void Form1_Load(object sender, EventArgs e) 21 { 22 23 } 24 25 private void button1_Click(object sender, EventArgs e) 26 { 27 this.xtraTabControl1.TabPages.Add("普通折線圖");//添加一個page 28 ChartControl lineChart = new ChartControl(); 29 Series series1 = new Series("通過人數", ViewType.Line); 30 series1.ArgumentScaleType = ScaleType.Numerical; 31 ((LineSeriesView)series1.View).LineMarkerOptions.Kind = MarkerKind.Triangle; 32 ((LineSeriesView)series1.View).LineStyle.DashStyle = DashStyle.Dash; 33 34 35 //series1.Points.Add(new SeriesPoint(1, new double[] { 2 })); 36 series1.Points.Add(new SeriesPoint(1, 1));//即便是個數組,仍然只用第一個數 37 series1.Points.Add(new SeriesPoint(2, new double[] { 3 })); 38 series1.Points.Add(new SeriesPoint(3, new double[] { 4 })); 39 series1.Points.Add(new SeriesPoint(4, new double[] { 6 })); 40 series1.Points.Add(new SeriesPoint(5, new double[] { 8 })); 41 series1.Points.Add(new SeriesPoint(6, new double[] { 10 })); 42 series1.Points.Add(new SeriesPoint(7, new double[] { 12 })); 43 series1.Points.Add(new SeriesPoint(8, new double[] { 15 })); 44 //series1.CheckableInLegend = true; 45 //series1.CheckedInLegend = true; 46 lineChart.Legend.UseCheckBoxes = true;//圖例可以勾選 47 48 Series series2 = new Series("報名人數", ViewType.Line); 49 series2.ArgumentScaleType = ScaleType.Numerical; 50 ((LineSeriesView)series2.View).LineMarkerOptions.Kind = MarkerKind.Cross; 51 ((LineSeriesView)series2.View).LineStyle.DashStyle = DashStyle.DashDotDot; 52 series2.Points.Add(new SeriesPoint(1, new double[] { 3 })); 53 series2.Points.Add(new SeriesPoint(2, new double[] { 5 })); 54 series2.Points.Add(new SeriesPoint(3, new double[] { 6 })); 55 series2.Points.Add(new SeriesPoint(4, new double[] { 7 })); 56 series2.Points.Add(new SeriesPoint(5, new double[] { 11 })); 57 series2.Points.Add(new SeriesPoint(6, new double[] { 13 })); 58 series2.Points.Add(new SeriesPoint(7, new double[] { 15 })); 59 series2.Points.Add(new SeriesPoint(8, new double[] { 18 })); 60 lineChart.Series.Add(series1); lineChart.Series.Add(series2); lineChart.Legend.Visible = true; 61 ((XYDiagram)lineChart.Diagram).Rotated = false; 62 lineChart.Dock = DockStyle.Fill; lineChart.Size = new System.Drawing.Size(400, 250); 63 this.Controls.Add(lineChart); 64 int tabPagesCount = this.xtraTabControl1.TabPages.Count - 1; 65 this.xtraTabControl1.TabPages[tabPagesCount].Controls.Add(lineChart); 66 this.xtraTabControl1.SelectedTabPageIndex = tabPagesCount; 67 68 } 69 public void ShowSeries(ChartControl lineChartControl, Series seriesName, string seriesText, List<double> xAxes, 70 List<double> yAxes, int iMarkerKind) 71 { 72 73 //seriesName = new Series(seriesText, ViewType.ScatterLine);//新建立一個系列 74 seriesName.ArgumentScaleType = ScaleType.Numerical;//x軸數據類型,為數字 75 ((LineSeriesView)seriesName.View).LineMarkerOptions.Kind = (MarkerKind)((iMarkerKind % 9));//mark類型 MarkerKind.Triangle 76 ((LineSeriesView)seriesName.View).MarkerVisibility =DevExpress.Utils.DefaultBoolean.True; 77 78 ((LineSeriesView)seriesName.View).LineStyle.DashStyle = DashStyle.Dash;//線型 79 for (int pointIndex = 0; pointIndex < xAxes.Count; pointIndex++) 80 { 81 seriesName.Points.Add(new SeriesPoint(xAxes[pointIndex], yAxes[pointIndex])); 82 } 83 lineChartControl.Series.Add(seriesName);//往ChartControl控件上添加系列 84 lineChartControl.Legend.Visible = true;//圖例可見 85 ((XYDiagram)lineChartControl.Diagram).Rotated = false;//ChartControl控件不旋轉 86 lineChartControl.Dock = DockStyle.Fill;//ChartControl控件在父控件內填滿平鋪 87 //lineChartControl.Size = new System.Drawing.Size(400, 250); 88 //this.Controls.Add(lineChartControl); 89 90 } 91 92 private void button2Pic2_Click(object sender, EventArgs e) 93 { 94 this.xtraTabControl2.TabPages.Add("三角函數圖");//添加一個page,在此之前可以直接用ui界面的本控件的remove屬性刪除默認的兩個page 95 ChartControl lineChartControl = new ChartControl();//實例化一個ChartControl 96 lineChartControl.Legend.UseCheckBoxes = true;//圖例可以勾選 97 98 //產生數據 99 List<double> xaxesList = new List<double>();//x軸數據 100 List<double> ySinList = new List<double>();//系列1-y軸數據 101 List<double> yCosList = new List<double>();//系列2-y軸數據 102 List<double> yTanList = new List<double>();//系列3-y軸數據 103 for (int i = 0; i < 20; i++) 104 { 105 xaxesList.Add(i); 106 ySinList.Add(Math.Sin(i)); 107 yCosList.Add(Math.Cos(i)); 108 yTanList.Add(Math.Sin(i) + Math.Cos(i)); 109 } 110 //將所有系列的y值放入一個列表,這個列表是列表的列表 111 List<List<double>> YList = new List<List<double>>(); 112 YList.Add(ySinList); 113 YList.Add(yCosList); 114 YList.Add(yTanList); 115 //系列內容名稱 116 List<string> seriesTextList = new List<string>();//系列內容名稱 117 seriesTextList.Add("cos"); 118 seriesTextList.Add("sin"); 119 seriesTextList.Add("cos+sin"); 120 //系列名稱 121 List<Series> seriesNameList = new List<Series>(); 122 for (int i = 0; i < 3; i++) 123 { 124 //完全建立一個系列,以后直接用就行了 125 seriesNameList.Add(new Series(seriesTextList[i], ViewType.Spline));//ScatterLine點划線,實驗值用這種,理論值用line 126 } 127 //將系列假如chartControl 128 for (int seriesIndex = 0; seriesIndex <3; seriesIndex++) 129 { 130 ShowSeries(lineChartControl, seriesNameList[seriesIndex], seriesTextList[seriesIndex], xaxesList, YList[seriesIndex], seriesIndex); 131 } 132 //顯示 133 int tabPagesCount = this.xtraTabControl2.TabPages.Count - 1;//xtraTabControl2page的個數,為了刪除默認的,可以用ui界面的remove 134 this.xtraTabControl2.TabPages[tabPagesCount].Controls.Add(lineChartControl);//將ChartControl這個控件添加到這個page中 135 this.xtraTabControl2.SelectedTabPageIndex = tabPagesCount;//切換到這個page為選中的page 136 137 } 138 } 139 }

技巧:1.當不知道哪個變量代表啥意思時,可以右鍵查看定義。這樣就不必凡事看別人的資料了。
2.之所以放在list中,是因為這樣可以方便的讀取excel放入list。


用循環加載不同數據,在畫第二幅圖是出現錯誤:
“System.ArgumentException”類型的未經處理的異常在 DevExpress.XtraCharts.v14.1.dll 中發生
其他信息: Can't set the series view's pane, because the specified pane isn't default and isn't contained in the diagram's collection of panes.

解決:最容易的就是我實現知道花幾個圖,然后,用chartControl拉出來這幾個圖,然后直接引用就可以啦。---這種方法好像不行。
1 using DevExpress.XtraCharts; 2 using System; 3 using System.Collections.Generic; 4 using System.ComponentModel; 5 using System.Data; 6 using System.Drawing; 7 using System.Linq; 8 using System.Text; 9 using System.Windows.Forms; 10 11 namespace WindowsFormsApplication2devexpressChart 12 { 13 public partial class Form1 : Form 14 { 15 public Form1() 16 { 17 InitializeComponent(); 18 } 19 20 private void button1_Click(object sender, EventArgs e) 21 { 22 ChartControl chartControl1 = new ChartControl(); 23 24 // Create two series. 25 Series series1 = new Series("Series 1", ViewType.Bar); 26 Series series2 = new Series("Series 2", ViewType.Line); 27 28 // Add points to them, with their arguments different. 29 series1.Points.Add(new SeriesPoint("A", 10)); 30 series1.Points.Add(new SeriesPoint("B", 12)); 31 series1.Points.Add(new SeriesPoint("C", 17)); 32 series1.Points.Add(new SeriesPoint("D", 14)); 33 series2.Points.Add(new SeriesPoint("I", 2500)); 34 series2.Points.Add(new SeriesPoint("II", 3800)); 35 series2.Points.Add(new SeriesPoint("III", 1500)); 36 series2.Points.Add(new SeriesPoint("IV", 1300)); 37 38 // Add both series to the chart. 39 chartControl1.Series.AddRange(new Series[] { series1, series2 }); 40 41 // Hide the legend (optional). 42 chartControl1.Legend.Visible = false; 43 44 // Cast the chart's diagram to the XYDiagram type, 45 // to access its axes and panes. 46 XYDiagram diagram = (XYDiagram)chartControl1.Diagram; 47 48 // Add secondary axes to the diagram, and adjust their options. 49 diagram.SecondaryAxesX.Add(new SecondaryAxisX("My Axis X")); 50 diagram.SecondaryAxesY.Add(new SecondaryAxisY("My Axis Y")); 51 diagram.SecondaryAxesX[0].Alignment = AxisAlignment.Near; 52 diagram.SecondaryAxesY[0].Alignment = AxisAlignment.Near; 53 54 // Add a new additional pane to the diagram. 55 diagram.Panes.Add(new XYDiagramPane("My Pane")); 56 57 // Assign both the additional pane and, if required, 58 // the secondary axes to the second series. 59 LineSeriesView myView = (LineSeriesView)series2.View; 60 myView.AxisX = diagram.SecondaryAxesX[0]; 61 myView.AxisY = diagram.SecondaryAxesY[0]; 62 // Note that the created pane has the zero index in the collection, 63 // because the existing Default pane is a separate entity. 64 myView.Pane = diagram.Panes[0]; 65 66 // Customize the layout of the diagram's panes. 67 diagram.PaneDistance = 10; 68 diagram.PaneLayoutDirection = PaneLayoutDirection.Horizontal; 69 diagram.DefaultPane.SizeMode = PaneSizeMode.UseWeight; 70 diagram.DefaultPane.Weight = 1.2; 71 72 // Add the chart to the form. 73 chartControl1.Dock = DockStyle.Fill; 74 this.Controls.Add(chartControl1); 75 } 76 } 77 }
解決方法如下,不要在一個循環里面用兩個畫圖函數(下面的方法還是沒有解決,因為第一個圖總可以用兩個ShowSeries)函數,第二個就不行了。
要這樣:
1 using DevExpress.XtraCharts; 2 using System; 3 using System.Collections.Generic; 4 using System.ComponentModel; 5 using System.Data; 6 using System.Drawing; 7 using System.Linq; 8 using System.Text; 9 using System.Windows.Forms; 10 11 namespace WindowsFormsApplication2devexpressChart 12 { 13 public partial class Form1 : Form 14 { 15 public Form1() 16 { 17 InitializeComponent(); 18 } 19 20 private void button1_Click(object sender, EventArgs e) 21 { 22 #region 23 //int tabPagesCount = 0; 24 //ChartControl chartControl1 = new ChartControl(); 25 26 //// Create two series. 27 //Series series1 = new Series("Series 1", ViewType.Bar); 28 //Series series2 = new Series("Series 2", ViewType.Line); 29 30 //// Add points to them, with their arguments different. 31 //series1.Points.Add(new SeriesPoint("A", 10)); 32 //series1.Points.Add(new SeriesPoint("B", 12)); 33 //series1.Points.Add(new SeriesPoint("C", 17)); 34 //series1.Points.Add(new SeriesPoint("D", 14)); 35 //series2.Points.Add(new SeriesPoint("I", 2500)); 36 //series2.Points.Add(new SeriesPoint("II", 3800)); 37 //series2.Points.Add(new SeriesPoint("III", 1500)); 38 //series2.Points.Add(new SeriesPoint("IV", 1300)); 39 40 //// Add both series to the chart. 41 //chartControl1.Series.AddRange(new Series[] { series1, series2 }); 42 43 //// Hide the legend (optional). 44 //chartControl1.Legend.Visible = false; 45 46 //// Cast the chart's diagram to the XYDiagram type, 47 //// to access its axes and panes. 48 //XYDiagram diagram = (XYDiagram)chartControl1.Diagram; 49 50 //// Add secondary axes to the diagram, and adjust their options. 51 //diagram.SecondaryAxesX.Add(new SecondaryAxisX("My Axis X")); 52 //diagram.SecondaryAxesY.Add(new SecondaryAxisY("My Axis Y")); 53 //diagram.SecondaryAxesX[0].Alignment = AxisAlignment.Near; 54 //diagram.SecondaryAxesY[0].Alignment = AxisAlignment.Near; 55 56 //// Add a new additional pane to the diagram. 57 //diagram.Panes.Add(new XYDiagramPane("My Pane")); 58 59 //// Assign both the additional pane and, if required, 60 //// the secondary axes to the second series. 61 //LineSeriesView myView = (LineSeriesView)series2.View; 62 //myView.AxisX = diagram.SecondaryAxesX[0]; 63 //myView.AxisY = diagram.SecondaryAxesY[0]; 64 //// Note that the created pane has the zero index in the collection, 65 //// because the existing Default pane is a separate entity. 66 //myView.Pane = diagram.Panes[0]; 67 68 //// Customize the layout of the diagram's panes. 69 //diagram.PaneDistance = 10; 70 //diagram.PaneLayoutDirection = PaneLayoutDirection.Horizontal; 71 //diagram.DefaultPane.SizeMode = PaneSizeMode.UseWeight; 72 //diagram.DefaultPane.Weight = 1.2; 73 74 //// Add the chart to the form. 75 //chartControl1.Dock = DockStyle.Fill; 76 ////this.Controls.Add(chartControl1); 77 //this.xtraTabControl1.TabPages.Add("zbl兩個pane圖");//添加一個page 78 //tabPagesCount = this.xtraTabControl1.TabPages.Count-1;//xtraTabControl2page的個數,為了刪除默認的,可以用ui界面的remove 79 //this.xtraTabControl1.TabPages[tabPagesCount].Controls.Add(chartControl1); 80 //this.xtraTabControl1.SelectedTabPageIndex = tabPagesCount; 81 82 83 //// 84 //ChartControl chartControl2 = new ChartControl(); 85 86 //// Create two series. 87 //Series series3 = new Series("Series 3", ViewType.Bar); 88 //Series series4= new Series("Series 4", ViewType.Line); 89 90 //// Add points to them, with their arguments different. 91 //series3.Points.Add(new SeriesPoint("A", 10)); 92 //series3.Points.Add(new SeriesPoint("B", 12)); 93 //series3.Points.Add(new SeriesPoint("C", 17)); 94 //series3.Points.Add(new SeriesPoint("D", 14)); 95 //series4.Points.Add(new SeriesPoint("I", 2500)); 96 //series4.Points.Add(new SeriesPoint("II", 3800)); 97 //series4.Points.Add(new SeriesPoint("III", 1500)); 98 //series4.Points.Add(new SeriesPoint("IV", 1300)); 99 100 //// Add both series to the chart. 101 //chartControl2.Series.AddRange(new Series[] { series3, series4 }); 102 103 //// Hide the legend (optional). 104 //chartControl2.Legend.Visible = false; 105 106 //// Cast the chart's diagram to the XYDiagram type, 107 //// to access its axes and panes. 108 //XYDiagram diagram2 = (XYDiagram)chartControl2.Diagram; 109 110 //// Add secondary axes to the diagram, and adjust their options. 111 //diagram2.SecondaryAxesX.Add(new SecondaryAxisX("My Axis X")); 112 //diagram2.SecondaryAxesY.Add(new SecondaryAxisY("My Axis Y")); 113 //diagram2.SecondaryAxesX[0].Alignment = AxisAlignment.Near; 114 //diagram2.SecondaryAxesY[0].Alignment = AxisAlignment.Near; 115 116 //// Add a new additional pane to the diagram. 117 //diagram2.Panes.Add(new XYDiagramPane("My Pane")); 118 119 //// Assign both the additional pane and, if required, 120 //// the secondary axes to the second series. 121 //LineSeriesView myView2 = (LineSeriesView)series2.View; 122 //myView2.AxisX = diagram2.SecondaryAxesX[0]; 123 //myView2.AxisY = diagram2.SecondaryAxesY[0]; 124 //// Note that the created pane has the zero index in the collection, 125 //// because the existing Default pane is a separate entity. 126 //myView2.Pane = diagram2.Panes[0]; 127 128 //// Customize the layout of the diagram's panes. 129 //diagram2.PaneDistance = 10; 130 //diagram2.PaneLayoutDirection = PaneLayoutDirection.Horizontal; 131 //diagram2.DefaultPane.SizeMode = PaneSizeMode.UseWeight; 132 //diagram2.DefaultPane.Weight = 1.2; 133 134 //// Add the chart to the form. 135 //chartControl2.Dock = DockStyle.Fill; 136 ////this.Controls.Add(chartControl1); 137 //this.xtraTabControl1.TabPages.Add("zbl兩個pane圖");//添加一個page 138 //tabPagesCount = this.xtraTabControl1.TabPages.Count - 1;//xtraTabControl2page的個數,為了刪除默認的,可以用ui界面的remove 139 //this.xtraTabControl1.TabPages[tabPagesCount].Controls.Add(chartControl2); 140 //this.xtraTabControl1.SelectedTabPageIndex = tabPagesCount; 141 142 #endregion 143 144 this.xtraTabControl1.TabPages.Add("三角函數圖");//添加一個page,在此之前可以直接用ui界面的本控件的remove屬性刪除默認的兩個page 145 ChartControl lineChartControl = new ChartControl();//實例化一個ChartControl 146 lineChartControl.Legend.UseCheckBoxes = true;//圖例可以勾選 147 lineChartControl.Series.Clear(); 148 //產生數據 149 List<double> xaxesList = new List<double>();//x軸數據 150 List<double> ySinList = new List<double>();//系列1-y軸數據 151 List<double> yCosList = new List<double>();//系列2-y軸數據 152 List<double> yTanList = new List<double>();//系列3-y軸數據 153 for (int i = 0; i < 20; i++) 154 { 155 xaxesList.Add(i); 156 ySinList.Add(Math.Sin(i)); 157 yCosList.Add(Math.Cos(i)); 158 yTanList.Add(Math.Sin(i) + Math.Cos(i)); 159 } 160 //將所有系列的y值放入一個列表,這個列表是列表的列表 161 List<List<double>> YList = new List<List<double>>(); 162 YList.Add(ySinList); 163 YList.Add(yCosList); 164 YList.Add(yTanList); 165 //系列內容名稱 166 List<string> seriesTextList = new List<string>();//系列內容名稱 167 seriesTextList.Add("400kPa理論值cos 我有中文"); 168 seriesTextList.Add("600kPa理論值cos 我有中文"); 169 seriesTextList.Add("800kPa理論值cos+sin 我有中文"); 170 //系列名稱 171 List<Series> seriesNameList = new List<Series>(); 172 for (int i = 0; i < 3; i++) 173 { 174 //完全建立一個系列,以后直接用就行了 175 seriesNameList.Add(new Series(seriesTextList[i], ViewType.Spline));//ScatterLine點划線,實驗值用這種,理論值用line 176 } 177 //將系列假如chartControl 178 //for (int seriesIndex = 0; seriesIndex < 3; seriesIndex++) 179 //{ 180 // ShowSeries(ref lineChartControl, seriesNameList[seriesIndex], seriesTextList[seriesIndex], xaxesList, YList[seriesIndex], seriesIndex); 181 //} 182 //顯示 183 int tabPagesCount = this.xtraTabControl1.TabPages.Count - 1;//xtraTabControl2page的個數,為了刪除默認的,可以用ui界面的remove 184 this.xtraTabControl1.TabPages[tabPagesCount].Controls.Add(lineChartControl);//將ChartControl這個控件添加到這個page中 185 this.xtraTabControl1.SelectedTabPageIndex = tabPagesCount;//切換到這個page為選中的page 186 187 188 189 190 191 192 //嘗試第二個圖 193 this.xtraTabControl1.TabPages.Add("三角函數圖2");//添加一個page,在此之前可以直接用ui界面的本控件的remove屬性刪除默認的兩個page 194 ChartControl lineChartControl2 = new ChartControl();//實例化一個ChartControl 195 lineChartControl2.Legend.UseCheckBoxes = true;//圖例可以勾選 196 lineChartControl2.Series.Clear(); 197 198 //產生數據 199 List<double> xaxesList2 = new List<double>();//x軸數據 200 List<double> ySinList2 = new List<double>();//系列1-y軸數據 201 List<double> yCosList2 = new List<double>();//系列2-y軸數據 202 List<double> yTanList2 = new List<double>();//系列3-y軸數據 203 for (int i = 0; i < 20; i++) 204 { 205 xaxesList2.Add(i); 206 ySinList2.Add(Math.Sin(i)); 207 yCosList2.Add(Math.Cos(i)); 208 yTanList2.Add(Math.Sin(i) + 2 * Math.Cos(i)); 209 } 210 //將所有系列的y值放入一個列表,這個列表是列表的列表 211 List<List<double>> YList2 = new List<List<double>>(); 212 YList2.Add(ySinList2); 213 YList2.Add(yCosList2); 214 YList2.Add(yTanList2); 215 //系列內容名稱 216 List<string> seriesTextList2 = new List<string>();//系列內容名稱 217 seriesTextList2.Add("cos 我有中文"); 218 seriesTextList2.Add("sin 我有中文"); 219 seriesTextList2.Add("2cos+sin我有中文"); 220 //系列名稱 221 List<Series> seriesNameList2 = new List<Series>(); 222 for (int i = 0; i < 3; i++) 223 { 224 //完全建立一個系列,以后直接用就行了 225 seriesNameList2.Add(new Series(seriesTextList2[i], ViewType.Spline));//ScatterLine點划線,實驗值用這種,理論值用line 226 227 } 228 //將系列假如chartControl 229 for (int seriesIndex = 0; seriesIndex < 3; seriesIndex++) 230 { 231 ShowSeries(ref lineChartControl2, seriesNameList2[seriesIndex], seriesTextList2[seriesIndex], xaxesList2, YList2[seriesIndex], seriesIndex); 232 //ShowSeriesTheory(ref lineChartControl2, seriesNameList[seriesIndex], seriesTextList[seriesIndex], xaxesList, YList[seriesIndex], seriesIndex);//This is an error!!!!!!!!!!!!!!!!!!!!!! 233 234 } 235 236 //顯示 237 tabPagesCount = this.xtraTabControl1.TabPages.Count - 1;//xtraTabControl2page的個數,為了刪除默認的,可以用ui界面的remove 238 this.xtraTabControl1.TabPages[tabPagesCount].Controls.Add(lineChartControl2);//將ChartControl這個控件添加到這個page中 239 this.xtraTabControl1.SelectedTabPageIndex = tabPagesCount;//切換到這個page為選中的page 240 241 242 243 244 //嘗試第三個圖 245 this.xtraTabControl1.TabPages.Add("三角函數圖3");//添加一個page,在此之前可以直接用ui界面的本控件的remove屬性刪除默認的兩個page 246 ChartControl lineChartControl3 = new ChartControl();//實例化一個ChartControl 247 lineChartControl3.Legend.UseCheckBoxes = true;//圖例可以勾選 248 lineChartControl3.Series.Clear(); 249 250 //產生數據 251 List<double> xaxesList3 = new List<double>();//x軸數據 252 List<double> ySinList3 = new List<double>();//系列1-y軸數據 253 List<double> yCosList3 = new List<double>();//系列2-y軸數據 254 List<double> yTanList3 = new List<double>();//系列3-y軸數據 255 for (int i = 0; i < 20; i++) 256 { 257 xaxesList3.Add(i); 258 ySinList3.Add(Math.Sin(i)); 259 yCosList3.Add(Math.Cos(i)); 260 yTanList3.Add(Math.Sin(i) + 2 * Math.Cos(i)); 261 } 262 //將所有系列的y值放入一個列表,這個列表是列表的列表 263 List<List<double>> YList3 = new List<List<double>>(); 264 YList3.Add(ySinList3); 265 YList3.Add(yCosList3); 266 YList3.Add(yTanList3); 267 //系列內容名稱 268 List<string> seriesTextList3 = new List<string>();//系列內容名稱 269 seriesTextList3.Add("cos 我有中文"); 270 seriesTextList3.Add("sin 我有中文"); 271 seriesTextList3.Add("2cos+sin我有中文"); 272 //系列名稱 273 List<Series> seriesNameList3 = new List<Series>(); 274 for (int i = 0; i < 3; i++) 275 { 276 //完全建立一個系列,以后直接用就行了 277 seriesNameList3.Add(new Series(seriesTextList3[i], ViewType.Spline));//ScatterLine點划線,實驗值用這種,理論值用line 278 279 } 280 //將系列假如chartControl 281 for (int seriesIndex = 0; seriesIndex < 3; seriesIndex++) 282 { 283 ShowSeries(ref lineChartControl3, seriesNameList3[seriesIndex], seriesTextList3[seriesIndex], xaxesList3, YList3[seriesIndex], seriesIndex); 284 // ShowSeriesTheory(ref lineChartControl3, seriesNameList[seriesIndex], seriesTextList[seriesIndex], xaxesList, YList[seriesIndex], seriesIndex);//This is an error!!!!!!!!!!!!!!!!!!!!!! 285 ShowSeries(ref lineChartControl3, seriesNameList[seriesIndex], seriesTextList[seriesIndex], xaxesList, YList[seriesIndex], seriesIndex); 286 } 287 288 //顯示 289 tabPagesCount = this.xtraTabControl1.TabPages.Count - 1;//xtraTabControl2page的個數,為了刪除默認的,可以用ui界面的remove 290 this.xtraTabControl1.TabPages[tabPagesCount].Controls.Add(lineChartControl3);//將ChartControl這個控件添加到這個page中 291 this.xtraTabControl1.SelectedTabPageIndex = tabPagesCount;//切換到這個page為選中的page 292 293 294 } 295 public void ShowSeries(ref ChartControl lineChartControl, Series seriesName, string seriesText, List<double> xAxes, 296 List<double> yAxes, int iMarkerKind) 297 { 298 299 //seriesName = new Series(seriesText, ViewType.ScatterLine);//新建立一個系列 300 seriesName.ArgumentScaleType = ScaleType.Numerical;//x軸數據類型,為數字 301 ((LineSeriesView)seriesName.View).LineMarkerOptions.Kind = (MarkerKind)((iMarkerKind % 9));//mark類型 MarkerKind.Triangle 302 ((LineSeriesView)seriesName.View).MarkerVisibility = DevExpress.Utils.DefaultBoolean.True; 303 304 ((LineSeriesView)seriesName.View).LineStyle.DashStyle = DashStyle.Dash;//線型 305 for (int pointIndex = 0; pointIndex < xAxes.Count; pointIndex++) 306 { 307 seriesName.Points.Add(new SeriesPoint(xAxes[pointIndex], yAxes[pointIndex])); 308 } 309 lineChartControl.Series.Add(seriesName);//往ChartControl控件上添加系列 310 lineChartControl.Legend.Visible = true;//圖例可見 311 ((XYDiagram)lineChartControl.Diagram).Rotated = false;//ChartControl控件不旋轉 312 lineChartControl.Dock = DockStyle.Fill;//ChartControl控件在父控件內填滿平鋪 313 //lineChartControl.Size = new System.Drawing.Size(400, 250); 314 //this.Controls.Add(lineChartControl); 315 316 } 317 318 public void ShowSeriesTheory(ref ChartControl lineChartControl, Series seriesName, string seriesText, List<double> xAxes, 319 List<double> yAxes, int iMarkerKind) 320 { 321 322 //seriesName = new Series(seriesText, ViewType.ScatterLine);//新建立一個系列 323 seriesName.ArgumentScaleType = ScaleType.Numerical;//x軸數據類型,為數字 324 ((LineSeriesView)seriesName.View).LineMarkerOptions.Kind = (MarkerKind)((iMarkerKind % 9));//mark類型 MarkerKind.Triangle 325 ((LineSeriesView)seriesName.View).MarkerVisibility = DevExpress.Utils.DefaultBoolean.True; 326 327 ((LineSeriesView)seriesName.View).LineStyle.DashStyle = DashStyle.Dash;//線型 328 for (int pointIndex = 0; pointIndex < xAxes.Count; pointIndex++) 329 { 330 seriesName.Points.Add(new SeriesPoint(xAxes[pointIndex], yAxes[pointIndex])); 331 } 332 333 lineChartControl.Series.Add(seriesName);//往ChartControl控件上添加系列 334 lineChartControl.Legend.Visible = true;//圖例可見 335 ((XYDiagram)lineChartControl.Diagram).Rotated = false;//ChartControl控件不旋轉 336 lineChartControl.Dock = DockStyle.Fill;//ChartControl控件在父控件內填滿平鋪 337 //lineChartControl.Size = new System.Drawing.Size(400, 250); 338 //this.Controls.Add(lineChartControl); 339 340 } 341 342 private void Form1_Load(object sender, EventArgs e) 343 { 344 345 } 346 } 347 }
//將系列假如chartControl
for (int seriesIndex = 0; seriesIndex < 3; seriesIndex++)
{
ShowSeries(ref lineChartControl3, seriesNameList3[seriesIndex], seriesTextList3[seriesIndex], xaxesList3, YList3[seriesIndex], seriesIndex);
// ShowSeriesTheory(ref lineChartControl3, seriesNameList[seriesIndex], seriesTextList[seriesIndex], xaxesList, YList[seriesIndex], seriesIndex);//錯誤
ShowSeries(ref lineChartControl3, seriesNameList[seriesIndex], seriesTextList[seriesIndex], xaxesList, YList[seriesIndex], seriesIndex);//正確
}

嘗試了,畫兩個圖也沒問題啊

1 using DevExpress.XtraCharts; 2 using System; 3 using System.Collections.Generic; 4 using System.ComponentModel; 5 using System.Data; 6 using System.Drawing; 7 using System.Linq; 8 using System.Text; 9 using System.Windows.Forms; 10 11 namespace WindowsFormsApplication2devexpressChart 12 { 13 public partial class Form1 : Form 14 { 15 public Form1() 16 { 17 InitializeComponent(); 18 } 19 20 private void button1_Click(object sender, EventArgs e) 21 { 22 #region 23 //int tabPagesCount = 0; 24 //ChartControl chartControl1 = new ChartControl(); 25 26 //// Create two series. 27 //Series series1 = new Series("Series 1", ViewType.Bar); 28 //Series series2 = new Series("Series 2", ViewType.Line); 29 30 //// Add points to them, with their arguments different. 31 //series1.Points.Add(new SeriesPoint("A", 10)); 32 //series1.Points.Add(new SeriesPoint("B", 12)); 33 //series1.Points.Add(new SeriesPoint("C", 17)); 34 //series1.Points.Add(new SeriesPoint("D", 14)); 35 //series2.Points.Add(new SeriesPoint("I", 2500)); 36 //series2.Points.Add(new SeriesPoint("II", 3800)); 37 //series2.Points.Add(new SeriesPoint("III", 1500)); 38 //series2.Points.Add(new SeriesPoint("IV", 1300)); 39 40 //// Add both series to the chart. 41 //chartControl1.Series.AddRange(new Series[] { series1, series2 }); 42 43 //// Hide the legend (optional). 44 //chartControl1.Legend.Visible = false; 45 46 //// Cast the chart's diagram to the XYDiagram type, 47 //// to access its axes and panes. 48 //XYDiagram diagram = (XYDiagram)chartControl1.Diagram; 49 50 //// Add secondary axes to the diagram, and adjust their options. 51 //diagram.SecondaryAxesX.Add(new SecondaryAxisX("My Axis X")); 52 //diagram.SecondaryAxesY.Add(new SecondaryAxisY("My Axis Y")); 53 //diagram.SecondaryAxesX[0].Alignment = AxisAlignment.Near; 54 //diagram.SecondaryAxesY[0].Alignment = AxisAlignment.Near; 55 56 //// Add a new additional pane to the diagram. 57 //diagram.Panes.Add(new XYDiagramPane("My Pane")); 58 59 //// Assign both the additional pane and, if required, 60 //// the secondary axes to the second series. 61 //LineSeriesView myView = (LineSeriesView)series2.View; 62 //myView.AxisX = diagram.SecondaryAxesX[0]; 63 //myView.AxisY = diagram.SecondaryAxesY[0]; 64 //// Note that the created pane has the zero index in the collection, 65 //// because the existing Default pane is a separate entity. 66 //myView.Pane = diagram.Panes[0]; 67 68 //// Customize the layout of the diagram's panes. 69 //diagram.PaneDistance = 10; 70 //diagram.PaneLayoutDirection = PaneLayoutDirection.Horizontal; 71 //diagram.DefaultPane.SizeMode = PaneSizeMode.UseWeight; 72 //diagram.DefaultPane.Weight = 1.2; 73 74 //// Add the chart to the form. 75 //chartControl1.Dock = DockStyle.Fill; 76 ////this.Controls.Add(chartControl1); 77 //this.xtraTabControl1.TabPages.Add("zbl兩個pane圖");//添加一個page 78 //tabPagesCount = this.xtraTabControl1.TabPages.Count-1;//xtraTabControl2page的個數,為了刪除默認的,可以用ui界面的remove 79 //this.xtraTabControl1.TabPages[tabPagesCount].Controls.Add(chartControl1); 80 //this.xtraTabControl1.SelectedTabPageIndex = tabPagesCount; 81 82 83 //// 84 //ChartControl chartControl2 = new ChartControl(); 85 86 //// Create two series. 87 //Series series3 = new Series("Series 3", ViewType.Bar); 88 //Series series4= new Series("Series 4", ViewType.Line); 89 90 //// Add points to them, with their arguments different. 91 //series3.Points.Add(new SeriesPoint("A", 10)); 92 //series3.Points.Add(new SeriesPoint("B", 12)); 93 //series3.Points.Add(new SeriesPoint("C", 17)); 94 //series3.Points.Add(new SeriesPoint("D", 14)); 95 //series4.Points.Add(new SeriesPoint("I", 2500)); 96 //series4.Points.Add(new SeriesPoint("II", 3800)); 97 //series4.Points.Add(new SeriesPoint("III", 1500)); 98 //series4.Points.Add(new SeriesPoint("IV", 1300)); 99 100 //// Add both series to the chart. 101 //chartControl2.Series.AddRange(new Series[] { series3, series4 }); 102 103 //// Hide the legend (optional). 104 //chartControl2.Legend.Visible = false; 105 106 //// Cast the chart's diagram to the XYDiagram type, 107 //// to access its axes and panes. 108 //XYDiagram diagram2 = (XYDiagram)chartControl2.Diagram; 109 110 //// Add secondary axes to the diagram, and adjust their options. 111 //diagram2.SecondaryAxesX.Add(new SecondaryAxisX("My Axis X")); 112 //diagram2.SecondaryAxesY.Add(new SecondaryAxisY("My Axis Y")); 113 //diagram2.SecondaryAxesX[0].Alignment = AxisAlignment.Near; 114 //diagram2.SecondaryAxesY[0].Alignment = AxisAlignment.Near; 115 116 //// Add a new additional pane to the diagram. 117 //diagram2.Panes.Add(new XYDiagramPane("My Pane")); 118 119 //// Assign both the additional pane and, if required, 120 //// the secondary axes to the second series. 121 //LineSeriesView myView2 = (LineSeriesView)series2.View; 122 //myView2.AxisX = diagram2.SecondaryAxesX[0]; 123 //myView2.AxisY = diagram2.SecondaryAxesY[0]; 124 //// Note that the created pane has the zero index in the collection, 125 //// because the existing Default pane is a separate entity. 126 //myView2.Pane = diagram2.Panes[0]; 127 128 //// Customize the layout of the diagram's panes. 129 //diagram2.PaneDistance = 10; 130 //diagram2.PaneLayoutDirection = PaneLayoutDirection.Horizontal; 131 //diagram2.DefaultPane.SizeMode = PaneSizeMode.UseWeight; 132 //diagram2.DefaultPane.Weight = 1.2; 133 134 //// Add the chart to the form. 135 //chartControl2.Dock = DockStyle.Fill; 136 ////this.Controls.Add(chartControl1); 137 //this.xtraTabControl1.TabPages.Add("zbl兩個pane圖");//添加一個page 138 //tabPagesCount = this.xtraTabControl1.TabPages.Count - 1;//xtraTabControl2page的個數,為了刪除默認的,可以用ui界面的remove 139 //this.xtraTabControl1.TabPages[tabPagesCount].Controls.Add(chartControl2); 140 //this.xtraTabControl1.SelectedTabPageIndex = tabPagesCount; 141 142 #endregion 143 144 this.xtraTabControl1.TabPages.Add("三角函數圖");//添加一個page,在此之前可以直接用ui界面的本控件的remove屬性刪除默認的兩個page 145 ChartControl lineChartControl = new ChartControl();//實例化一個ChartControl 146 lineChartControl.Legend.UseCheckBoxes = true;//圖例可以勾選 147 148 //產生數據 149 List<double> xaxesList = new List<double>();//x軸數據 150 List<double> ySinList = new List<double>();//系列1-y軸數據 151 List<double> yCosList = new List<double>();//系列2-y軸數據 152 List<double> yTanList = new List<double>();//系列3-y軸數據 153 for (int i = 0; i < 20; i++) 154 { 155 xaxesList.Add(i); 156 ySinList.Add(Math.Sin(i)); 157 yCosList.Add(Math.Cos(i)); 158 yTanList.Add(Math.Sin(i) + Math.Cos(i)); 159 } 160 //將所有系列的y值放入一個列表,這個列表是列表的列表 161 List<List<double>> YList = new List<List<double>>(); 162 YList.Add(ySinList); 163 YList.Add(yCosList); 164 YList.Add(yTanList); 165 //系列內容名稱 166 List<string> seriesTextList = new List<string>();//系列內容名稱 167 seriesTextList.Add("cos"); 168 seriesTextList.Add("sin"); 169 seriesTextList.Add("cos+sin"); 170 //系列名稱 171 List<Series> seriesNameList = new List<Series>(); 172 for (int i = 0; i < 3; i++) 173 { 174 //完全建立一個系列,以后直接用就行了 175 seriesNameList.Add(new Series(seriesTextList[i], ViewType.Spline));//ScatterLine點划線,實驗值用這種,理論值用line 176 } 177 //將系列假如chartControl 178 for (int seriesIndex = 0; seriesIndex < 3; seriesIndex++) 179 { 180 ShowSeries(lineChartControl, seriesNameList[seriesIndex], seriesTextList[seriesIndex], xaxesList, YList[seriesIndex], seriesIndex); 181 } 182 //顯示 183 int tabPagesCount = this.xtraTabControl1.TabPages.Count - 1;//xtraTabControl2page的個數,為了刪除默認的,可以用ui界面的remove 184 this.xtraTabControl1.TabPages[tabPagesCount].Controls.Add(lineChartControl);//將ChartControl這個控件添加到這個page中 185 this.xtraTabControl1.SelectedTabPageIndex = tabPagesCount;//切換到這個page為選中的page 186 187 //嘗試第二個圖 188 189 190 191 192 //嘗試第二個圖 193 this.xtraTabControl1.TabPages.Add("三角函數圖2");//添加一個page,在此之前可以直接用ui界面的本控件的remove屬性刪除默認的兩個page 194 ChartControl lineChartControl2 = new ChartControl();//實例化一個ChartControl 195 lineChartControl2.Legend.UseCheckBoxes = true;//圖例可以勾選 196 197 //產生數據 198 List<double> xaxesList2 = new List<double>();//x軸數據 199 List<double> ySinList2 = new List<double>();//系列1-y軸數據 200 List<double> yCosList2 = new List<double>();//系列2-y軸數據 201 List<double> yTanList2 = new List<double>();//系列3-y軸數據 202 for (int i = 0; i < 20; i++) 203 { 204 xaxesList2.Add(i); 205 ySinList2.Add(Math.Sin(i)); 206 yCosList2.Add(Math.Cos(i)); 207 yTanList2.Add(Math.Sin(i) + 2 * Math.Cos(i)); 208 } 209 //將所有系列的y值放入一個列表,這個列表是列表的列表 210 List<List<double>> YList2 = new List<List<double>>(); 211 YList2.Add(ySinList2); 212 YList2.Add(yCosList2); 213 YList2.Add(yTanList2); 214 //系列內容名稱 215 List<string> seriesTextList2 = new List<string>();//系列內容名稱 216 seriesTextList2.Add("cos"); 217 seriesTextList2.Add("sin"); 218 seriesTextList2.Add("2cos+sin"); 219 //系列名稱 220 List<Series> seriesNameList2 = new List<Series>(); 221 for (int i = 0; i < 3; i++) 222 { 223 //完全建立一個系列,以后直接用就行了 224 seriesNameList2.Add(new Series(seriesTextList2[i], ViewType.Spline));//ScatterLine點划線,實驗值用這種,理論值用line 225 } 226 //將系列假如chartControl 227 for (int seriesIndex = 0; seriesIndex < 3; seriesIndex++) 228 { 229 ShowSeries(lineChartControl2, seriesNameList2[seriesIndex], seriesTextList2[seriesIndex], xaxesList2, YList2[seriesIndex], seriesIndex); 230 } 231 //顯示 232 tabPagesCount = this.xtraTabControl1.TabPages.Count - 1;//xtraTabControl2page的個數,為了刪除默認的,可以用ui界面的remove 233 this.xtraTabControl1.TabPages[tabPagesCount].Controls.Add(lineChartControl2);//將ChartControl這個控件添加到這個page中 234 this.xtraTabControl1.SelectedTabPageIndex = tabPagesCount;//切換到這個page為選中的page 235 236 237 238 } 239 public void ShowSeries(ChartControl lineChartControl, Series seriesName, string seriesText, List<double> xAxes, 240 List<double> yAxes, int iMarkerKind) 241 { 242 243 //seriesName = new Series(seriesText, ViewType.ScatterLine);//新建立一個系列 244 seriesName.ArgumentScaleType = ScaleType.Numerical;//x軸數據類型,為數字 245 ((LineSeriesView)seriesName.View).LineMarkerOptions.Kind = (MarkerKind)((iMarkerKind % 9));//mark類型 MarkerKind.Triangle 246 ((LineSeriesView)seriesName.View).MarkerVisibility = DevExpress.Utils.DefaultBoolean.True; 247 248 ((LineSeriesView)seriesName.View).LineStyle.DashStyle = DashStyle.Dash;//線型 249 for (int pointIndex = 0; pointIndex < xAxes.Count; pointIndex++) 250 { 251 seriesName.Points.Add(new SeriesPoint(xAxes[pointIndex], yAxes[pointIndex])); 252 } 253 lineChartControl.Series.Add(seriesName);//往ChartControl控件上添加系列 254 lineChartControl.Legend.Visible = true;//圖例可見 255 ((XYDiagram)lineChartControl.Diagram).Rotated = false;//ChartControl控件不旋轉 256 lineChartControl.Dock = DockStyle.Fill;//ChartControl控件在父控件內填滿平鋪 257 //lineChartControl.Size = new System.Drawing.Size(400, 250); 258 //this.Controls.Add(lineChartControl); 259 260 } 261 } 262 }


在代碼中圖例加上中文也沒事:

1 using DevExpress.XtraCharts; 2 using System; 3 using System.Collections.Generic; 4 using System.ComponentModel; 5 using System.Data; 6 using System.Drawing; 7 using System.Linq; 8 using System.Text; 9 using System.Windows.Forms; 10 11 namespace WindowsFormsApplication2devexpressChart 12 { 13 public partial class Form1 : Form 14 { 15 public Form1() 16 { 17 InitializeComponent(); 18 } 19 20 private void button1_Click(object sender, EventArgs e) 21 { 22 #region 23 //int tabPagesCount = 0; 24 //ChartControl chartControl1 = new ChartControl(); 25 26 //// Create two series. 27 //Series series1 = new Series("Series 1", ViewType.Bar); 28 //Series series2 = new Series("Series 2", ViewType.Line); 29 30 //// Add points to them, with their arguments different. 31 //series1.Points.Add(new SeriesPoint("A", 10)); 32 //series1.Points.Add(new SeriesPoint("B", 12)); 33 //series1.Points.Add(new SeriesPoint("C", 17)); 34 //series1.Points.Add(new SeriesPoint("D", 14)); 35 //series2.Points.Add(new SeriesPoint("I", 2500)); 36 //series2.Points.Add(new SeriesPoint("II", 3800)); 37 //series2.Points.Add(new SeriesPoint("III", 1500)); 38 //series2.Points.Add(new SeriesPoint("IV", 1300)); 39 40 //// Add both series to the chart. 41 //chartControl1.Series.AddRange(new Series[] { series1, series2 }); 42 43 //// Hide the legend (optional). 44 //chartControl1.Legend.Visible = false; 45 46 //// Cast the chart's diagram to the XYDiagram type, 47 //// to access its axes and panes. 48 //XYDiagram diagram = (XYDiagram)chartControl1.Diagram; 49 50 //// Add secondary axes to the diagram, and adjust their options. 51 //diagram.SecondaryAxesX.Add(new SecondaryAxisX("My Axis X")); 52 //diagram.SecondaryAxesY.Add(new SecondaryAxisY("My Axis Y")); 53 //diagram.SecondaryAxesX[0].Alignment = AxisAlignment.Near; 54 //diagram.SecondaryAxesY[0].Alignment = AxisAlignment.Near; 55 56 //// Add a new additional pane to the diagram. 57 //diagram.Panes.Add(new XYDiagramPane("My Pane")); 58 59 //// Assign both the additional pane and, if required, 60 //// the secondary axes to the second series. 61 //LineSeriesView myView = (LineSeriesView)series2.View; 62 //myView.AxisX = diagram.SecondaryAxesX[0]; 63 //myView.AxisY = diagram.SecondaryAxesY[0]; 64 //// Note that the created pane has the zero index in the collection, 65 //// because the existing Default pane is a separate entity. 66 //myView.Pane = diagram.Panes[0]; 67 68 //// Customize the layout of the diagram's panes. 69 //diagram.PaneDistance = 10; 70 //diagram.PaneLayoutDirection = PaneLayoutDirection.Horizontal; 71 //diagram.DefaultPane.SizeMode = PaneSizeMode.UseWeight; 72 //diagram.DefaultPane.Weight = 1.2; 73 74 //// Add the chart to the form. 75 //chartControl1.Dock = DockStyle.Fill; 76 ////this.Controls.Add(chartControl1); 77 //this.xtraTabControl1.TabPages.Add("zbl兩個pane圖");//添加一個page 78 //tabPagesCount = this.xtraTabControl1.TabPages.Count-1;//xtraTabControl2page的個數,為了刪除默認的,可以用ui界面的remove 79 //this.xtraTabControl1.TabPages[tabPagesCount].Controls.Add(chartControl1); 80 //this.xtraTabControl1.SelectedTabPageIndex = tabPagesCount; 81 82 83 //// 84 //ChartControl chartControl2 = new ChartControl(); 85 86 //// Create two series. 87 //Series series3 = new Series("Series 3", ViewType.Bar); 88 //Series series4= new Series("Series 4", ViewType.Line); 89 90 //// Add points to them, with their arguments different. 91 //series3.Points.Add(new SeriesPoint("A", 10)); 92 //series3.Points.Add(new SeriesPoint("B", 12)); 93 //series3.Points.Add(new SeriesPoint("C", 17)); 94 //series3.Points.Add(new SeriesPoint("D", 14)); 95 //series4.Points.Add(new SeriesPoint("I", 2500)); 96 //series4.Points.Add(new SeriesPoint("II", 3800)); 97 //series4.Points.Add(new SeriesPoint("III", 1500)); 98 //series4.Points.Add(new SeriesPoint("IV", 1300)); 99 100 //// Add both series to the chart. 101 //chartControl2.Series.AddRange(new Series[] { series3, series4 }); 102 103 //// Hide the legend (optional). 104 //chartControl2.Legend.Visible = false; 105 106 //// Cast the chart's diagram to the XYDiagram type, 107 //// to access its axes and panes. 108 //XYDiagram diagram2 = (XYDiagram)chartControl2.Diagram; 109 110 //// Add secondary axes to the diagram, and adjust their options. 111 //diagram2.SecondaryAxesX.Add(new SecondaryAxisX("My Axis X")); 112 //diagram2.SecondaryAxesY.Add(new SecondaryAxisY("My Axis Y")); 113 //diagram2.SecondaryAxesX[0].Alignment = AxisAlignment.Near; 114 //diagram2.SecondaryAxesY[0].Alignment = AxisAlignment.Near; 115 116 //// Add a new additional pane to the diagram. 117 //diagram2.Panes.Add(new XYDiagramPane("My Pane")); 118 119 //// Assign both the additional pane and, if required, 120 //// the secondary axes to the second series. 121 //LineSeriesView myView2 = (LineSeriesView)series2.View; 122 //myView2.AxisX = diagram2.SecondaryAxesX[0]; 123 //myView2.AxisY = diagram2.SecondaryAxesY[0]; 124 //// Note that the created pane has the zero index in the collection, 125 //// because the existing Default pane is a separate entity. 126 //myView2.Pane = diagram2.Panes[0]; 127 128 //// Customize the layout of the diagram's panes. 129 //diagram2.PaneDistance = 10; 130 //diagram2.PaneLayoutDirection = PaneLayoutDirection.Horizontal; 131 //diagram2.DefaultPane.SizeMode = PaneSizeMode.UseWeight; 132 //diagram2.DefaultPane.Weight = 1.2; 133 134 //// Add the chart to the form. 135 //chartControl2.Dock = DockStyle.Fill; 136 ////this.Controls.Add(chartControl1); 137 //this.xtraTabControl1.TabPages.Add("zbl兩個pane圖");//添加一個page 138 //tabPagesCount = this.xtraTabControl1.TabPages.Count - 1;//xtraTabControl2page的個數,為了刪除默認的,可以用ui界面的remove 139 //this.xtraTabControl1.TabPages[tabPagesCount].Controls.Add(chartControl2); 140 //this.xtraTabControl1.SelectedTabPageIndex = tabPagesCount; 141 142 #endregion 143 144 this.xtraTabControl1.TabPages.Add("三角函數圖");//添加一個page,在此之前可以直接用ui界面的本控件的remove屬性刪除默認的兩個page 145 ChartControl lineChartControl = new ChartControl();//實例化一個ChartControl 146 lineChartControl.Legend.UseCheckBoxes = true;//圖例可以勾選 147 ChartTitle chartTitle1 = new ChartTitle(); 148 chartTitle1.Text = "Side-by-Side Bar Chart"; 149 lineChartControl.Titles.Add(chartTitle1); 150 lineChartControl.Series.Clear(); 151 //產生數據 152 List<double> xaxesList = new List<double>();//x軸數據 153 List<double> ySinList = new List<double>();//系列1-y軸數據 154 List<double> yCosList = new List<double>();//系列2-y軸數據 155 List<double> yTanList = new List<double>();//系列3-y軸數據 156 for (int i = 0; i < 20; i++) 157 { 158 xaxesList.Add((double)i); 159 ySinList.Add(Math.Sin(i)); 160 yCosList.Add(Math.Cos(i)); 161 yTanList.Add(Math.Sin(i) + Math.Cos(i)); 162 } 163 //將所有系列的y值放入一個列表,這個列表是列表的列表 164 List<List<double>> YList = new List<List<double>>(); 165 YList.Add(ySinList); 166 YList.Add(yCosList); 167 YList.Add(yTanList); 168 //系列內容名稱 169 List<string> seriesTextList = new List<string>();//系列內容名稱 170 seriesTextList.Add("400kPa理論值cos 我有中文1"); 171 seriesTextList.Add("600kPa理論值cos 我有中文1"); 172 seriesTextList.Add("800kPa理論值cos+sin 我有中文1"); 173 //系列名稱 174 List<Series> seriesNameList = new List<Series>(); 175 for (int i = 0; i < 3; i++) 176 { 177 //完全建立一個系列,以后直接用就行了 178 seriesNameList.Add(new Series(seriesTextList[i], ViewType.Spline));//ScatterLine點划線,實驗值用這種,理論值用line 179 } 180 //將系列假如chartControl 181 for (int seriesIndex = 0; seriesIndex < 3; seriesIndex++) 182 { 183 ShowSeries(ref lineChartControl, seriesNameList[seriesIndex], seriesTextList[seriesIndex], xaxesList, YList[seriesIndex], seriesIndex); 184 185 } 186 //顯示 187 int tabPagesCount = this.xtraTabControl1.TabPages.Count - 1;//xtraTabControl2page的個數,為了刪除默認的,可以用ui界面的remove 188 this.xtraTabControl1.TabPages[tabPagesCount].Controls.Add(lineChartControl);//將ChartControl這個控件添加到這個page中 189 this.xtraTabControl1.SelectedTabPageIndex = tabPagesCount;//切換到這個page為選中的page 190 191 192 193 194 195 196 //嘗試第二個圖 197 this.xtraTabControl1.TabPages.Add("三角函數圖2");//添加一個page,在此之前可以直接用ui界面的本控件的remove屬性刪除默認的兩個page 198 ChartControl lineChartControl2 = new ChartControl();//實例化一個ChartControl 199 lineChartControl2.Legend.UseCheckBoxes = true;//圖例可以勾選 200 lineChartControl2.Series.Clear(); 201 202 //產生數據 203 List<double> xaxesList2 = new List<double>();//x軸數據 204 List<double> ySinList2 = new List<double>();//系列1-y軸數據 205 List<double> yCosList2 = new List<double>();//系列2-y軸數據 206 List<double> yTanList2 = new List<double>();//系列3-y軸數據 207 for (int i = 0; i < 20; i++) 208 { 209 xaxesList2.Add((double)i); 210 ySinList2.Add(Math.Sin(i)); 211 yCosList2.Add(Math.Cos(i)); 212 yTanList2.Add(Math.Sin(i) + 2 * Math.Cos(i)); 213 } 214 //將所有系列的y值放入一個列表,這個列表是列表的列表 215 List<List<double>> YList2 = new List<List<double>>(); 216 YList2.Add(ySinList2); 217 YList2.Add(yCosList2); 218 YList2.Add(yTanList2); 219 //系列內容名稱 220 List<string> seriesTextList2 = new List<string>();//系列內容名稱 221 seriesTextList2.Add("400kPa實驗值cos 我有中文2"); 222 seriesTextList2.Add("600kPa實驗值sin 我有中文2"); 223 seriesTextList2.Add("800kPa實驗值2cos+sin我有中文2"); 224 //系列名稱 225 List<Series> seriesNameList2 = new List<Series>(); 226 for (int i = 0; i < 3; i++) 227 { 228 //完全建立一個系列,以后直接用就行了 229 seriesNameList2.Add(new Series(seriesTextList2[i], ViewType.Spline));//ScatterLine點划線,實驗值用這種,理論值用line 230 231 } 232 //合成一個系列 233 List<string> seriesTextList12 = new List<string>(); 234 seriesTextList12.AddRange(seriesTextList); 235 seriesTextList12.AddRange(seriesTextList2); 236 List<Series> seriesNameList12 = new List<Series>(); 237 seriesNameList12.AddRange(seriesNameList); 238 seriesNameList12.AddRange(seriesNameList2); 239 List<List<double>> xaxesList12 = new List<List<double>>();//x軸數據 240 xaxesList12.Add(xaxesList); 241 xaxesList12.Add(xaxesList); 242 xaxesList12.Add(xaxesList); 243 xaxesList12.Add(xaxesList2); 244 xaxesList12.Add(xaxesList2); 245 xaxesList12.Add(xaxesList2); 246 List<List<double>> YList12 = new List<List<double>>(); 247 YList12.AddRange(YList); 248 YList12.AddRange(YList2); 249 250 //將系列假如chartControl 251 for (int seriesIndex = 0; seriesIndex < seriesNameList12.Count; seriesIndex++) 252 { 253 //ShowSeries(ref lineChartControl2, seriesNameList2[seriesIndex], seriesTextList2[seriesIndex], xaxesList2, YList2[seriesIndex], seriesIndex); 254 ////ShowSeriesTheory(ref lineChartControl2, seriesNameList[seriesIndex], seriesTextList[seriesIndex], xaxesList, YList[seriesIndex], seriesIndex);//This is an error!!!!!!!!!!!!!!!!!!!!!! 255 ShowSeries(ref lineChartControl2, seriesNameList12[seriesIndex], seriesTextList12[seriesIndex], xaxesList12[seriesIndex], YList12[seriesIndex], seriesIndex); 256 } 257 258 //顯示 259 tabPagesCount = this.xtraTabControl1.TabPages.Count - 1;//xtraTabControl2page的個數,為了刪除默認的,可以用ui界面的remove 260 this.xtraTabControl1.TabPages[tabPagesCount].Controls.Add(lineChartControl2);//將ChartControl這個控件添加到這個page中 261 this.xtraTabControl1.SelectedTabPageIndex = tabPagesCount;//切換到這個page為選中的page 262 263 264 265 266 //嘗試第三個圖 267 this.xtraTabControl1.TabPages.Add("三角函數圖3");//添加一個page,在此之前可以直接用ui界面的本控件的remove屬性刪除默認的兩個page 268 ChartControl lineChartControl3 = new ChartControl();//實例化一個ChartControl 269 lineChartControl3.Legend.UseCheckBoxes = true;//圖例可以勾選 270 lineChartControl3.Series.Clear(); 271 272 //產生數據 273 List<double> xaxesList3 = new List<double>();//x軸數據 274 List<double> ySinList3 = new List<double>();//系列1-y軸數據 275 List<double> yCosList3 = new List<double>();//系列2-y軸數據 276 List<double> yTanList3 = new List<double>();//系列3-y軸數據 277 for (int i = 0; i < 20; i++) 278 { 279 xaxesList3.Add((double)i); 280 ySinList3.Add(Math.Sin(i)); 281 yCosList3.Add(Math.Cos(i)); 282 yTanList3.Add(Math.Sin(i) + 2 * Math.Cos(i)); 283 } 284 //將所有系列的y值放入一個列表,這個列表是列表的列表 285 List<List<double>> YList3 = new List<List<double>>(); 286 YList3.Add(ySinList3); 287 YList3.Add(yCosList3); 288 YList3.Add(yTanList3); 289 //系列內容名稱 290 List<string> seriesTextList3 = new List<string>();//系列內容名稱 291 seriesTextList3.Add("cos 我有中文3"); 292 seriesTextList3.Add("sin 我有中文3"); 293 seriesTextList3.Add("2cos+sin我有中文3"); 294 //系列名稱 295 List<Series> seriesNameList3 = new List<Series>(); 296 for (int i = 0; i < 3; i++) 297 { 298 //完全建立一個系列,以后直接用就行了 299 seriesNameList3.Add(new Series(seriesTextList3[i], ViewType.Spline));//ScatterLine點划線,實驗值用這種,理論值用line 300 301 } 302 //將系列假如chartControl 303 for (int seriesIndex = 0; seriesIndex < 3; seriesIndex++) 304 { 305 ShowSeries(ref lineChartControl3, seriesNameList3[seriesIndex], seriesTextList3[seriesIndex], xaxesList3, YList3[seriesIndex], seriesIndex); 306 // ShowSeriesTheory(ref lineChartControl3, seriesNameList[seriesIndex], seriesTextList[seriesIndex], xaxesList, YList[seriesIndex], seriesIndex);//This is an error!!!!!!!!!!!!!!!!!!!!!! 307 //ShowSeries(ref lineChartControl3, seriesNameList[seriesIndex], seriesTextList[seriesIndex], xaxesList, YList[seriesIndex], seriesIndex); 308 } 309 310 //顯示 311 tabPagesCount = this.xtraTabControl1.TabPages.Count - 1;//xtraTabControl2page的個數,為了刪除默認的,可以用ui界面的remove 312 this.xtraTabControl1.TabPages[tabPagesCount].Controls.Add(lineChartControl3);//將ChartControl這個控件添加到這個page中 313 this.xtraTabControl1.SelectedTabPageIndex = tabPagesCount;//切換到這個page為選中的page 314 315 316 } 317 public void ShowSeries(ref ChartControl lineChartControl, Series seriesName, string seriesText, List<double> xAxes, 318 List<double> yAxes, int iMarkerKind) 319 { 320 321 //seriesName = new Series(seriesText, ViewType.ScatterLine);//新建立一個系列 322 seriesName.ArgumentScaleType = ScaleType.Numerical;//x軸數據類型,為數字 323 ((LineSeriesView)seriesName.View).LineMarkerOptions.Kind = (MarkerKind)((iMarkerKind % 9));//mark類型 MarkerKind.Triangle 324 ((LineSeriesView)seriesName.View).MarkerVisibility = DevExpress.Utils.DefaultBoolean.True; 325 326 ((LineSeriesView)seriesName.View).LineStyle.DashStyle = DashStyle.Dash;//線型 327 for (int pointIndex = 0; pointIndex < xAxes.Count; pointIndex++) 328 { 329 seriesName.Points.Add(new SeriesPoint(xAxes[pointIndex], yAxes[pointIndex])); 330 } 331 lineChartControl.Series.Clear(); 332 lineChartControl.Series.Add(seriesName);//往ChartControl控件上添加系列 333 lineChartControl.Legend.Visible = true;//圖例可見 334 ((XYDiagram)lineChartControl.Diagram).Rotated = false;//ChartControl控件不旋轉 335 lineChartControl.Dock = DockStyle.Fill;//ChartControl控件在父控件內填滿平鋪 336 //lineChartControl.Size = new System.Drawing.Size(400, 250); 337 //this.Controls.Add(lineChartControl); 338 339 } 340 341 // public void ShowSeriesTheory(ref ChartControl lineChartControl, Series seriesName, string seriesText, List<double> xAxes, 342 //List<double> yAxes, int iMarkerKind) 343 // { 344 345 // //seriesName = new Series(seriesText, ViewType.ScatterLine);//新建立一個系列 346 // seriesName.ArgumentScaleType = ScaleType.Numerical;//x軸數據類型,為數字 347 // ((LineSeriesView)seriesName.View).LineMarkerOptions.Kind = (MarkerKind)((iMarkerKind % 9));//mark類型 MarkerKind.Triangle 348 // ((LineSeriesView)seriesName.View).MarkerVisibility = DevExpress.Utils.DefaultBoolean.True; 349 350 // ((LineSeriesView)seriesName.View).LineStyle.DashStyle = DashStyle.Dash;//線型 351 // for (int pointIndex = 0; pointIndex < xAxes.Count; pointIndex++) 352 // { 353 // seriesName.Points.Add(new SeriesPoint(xAxes[pointIndex], yAxes[pointIndex])); 354 // } 355 // lineChartControl.Series.Add(seriesName);//往ChartControl控件上添加系列 356 // lineChartControl.Legend.Visible = true;//圖例可見 357 // ((XYDiagram)lineChartControl.Diagram).Rotated = false;//ChartControl控件不旋轉 358 // lineChartControl.Dock = DockStyle.Fill;//ChartControl控件在父控件內填滿平鋪 359 // //lineChartControl.Size = new System.Drawing.Size(400, 250); 360 // //this.Controls.Add(lineChartControl); 361 362 // } 363 364 private void Form1_Load(object sender, EventArgs e) 365 { 366 367 } 368 } 369 }
1 using DevExpress.XtraCharts; 2 using System; 3 using System.Collections.Generic; 4 using System.ComponentModel; 5 using System.Data; 6 using System.Drawing; 7 using System.Linq; 8 using System.Text; 9 using System.Windows.Forms; 10 11 namespace WindowsFormsApplication2devexpressChart 12 { 13 public partial class Form1 : Form 14 { 15 public Form1() 16 { 17 InitializeComponent(); 18 } 19 20 private void button1_Click(object sender, EventArgs e) 21 { 22 #region 23 //int tabPagesCount = 0; 24 //ChartControl chartControl1 = new ChartControl(); 25 26 //// Create two series. 27 //Series series1 = new Series("Series 1", ViewType.Bar); 28 //Series series2 = new Series("Series 2", ViewType.Line); 29 30 //// Add points to them, with their arguments different. 31 //series1.Points.Add(new SeriesPoint("A", 10)); 32 //series1.Points.Add(new SeriesPoint("B", 12)); 33 //series1.Points.Add(new SeriesPoint("C", 17)); 34 //series1.Points.Add(new SeriesPoint("D", 14)); 35 //series2.Points.Add(new SeriesPoint("I", 2500)); 36 //series2.Points.Add(new SeriesPoint("II", 3800)); 37 //series2.Points.Add(new SeriesPoint("III", 1500)); 38 //series2.Points.Add(new SeriesPoint("IV", 1300)); 39 40 //// Add both series to the chart. 41 //chartControl1.Series.AddRange(new Series[] { series1, series2 }); 42 43 //// Hide the legend (optional). 44 //chartControl1.Legend.Visible = false; 45 46 //// Cast the chart's diagram to the XYDiagram type, 47 //// to access its axes and panes. 48 //XYDiagram diagram = (XYDiagram)chartControl1.Diagram; 49 50 //// Add secondary axes to the diagram, and adjust their options. 51 //diagram.SecondaryAxesX.Add(new SecondaryAxisX("My Axis X")); 52 //diagram.SecondaryAxesY.Add(new SecondaryAxisY("My Axis Y")); 53 //diagram.SecondaryAxesX[0].Alignment = AxisAlignment.Near; 54 //diagram.SecondaryAxesY[0].Alignment = AxisAlignment.Near; 55 56 //// Add a new additional pane to the diagram. 57 //diagram.Panes.Add(new XYDiagramPane("My Pane")); 58 59 //// Assign both the additional pane and, if required, 60 //// the secondary axes to the second series. 61 //LineSeriesView myView = (LineSeriesView)series2.View; 62 //myView.AxisX = diagram.SecondaryAxesX[0]; 63 //myView.AxisY = diagram.SecondaryAxesY[0]; 64 //// Note that the created pane has the zero index in the collection, 65 //// because the existing Default pane is a separate entity. 66 //myView.Pane = diagram.Panes[0]; 67 68 //// Customize the layout of the diagram's panes. 69 //diagram.PaneDistance = 10; 70 //diagram.PaneLayoutDirection = PaneLayoutDirection.Horizontal; 71 //diagram.DefaultPane.SizeMode = PaneSizeMode.UseWeight; 72 //diagram.DefaultPane.Weight = 1.2; 73 74 //// Add the chart to the form. 75 //chartControl1.Dock = DockStyle.Fill; 76 ////this.Controls.Add(chartControl1); 77 //this.xtraTabControl1.TabPages.Add("zbl兩個pane圖");//添加一個page 78 //tabPagesCount = this.xtraTabControl1.TabPages.Count-1;//xtraTabControl2page的個數,為了刪除默認的,可以用ui界面的remove 79 //this.xtraTabControl1.TabPages[tabPagesCount].Controls.Add(chartControl1); 80 //this.xtraTabControl1.SelectedTabPageIndex = tabPagesCount; 81 82 83 //// 84 //ChartControl chartControl2 = new ChartControl(); 85 86 //// Create two series. 87 //Series series3 = new Series("Series 3", ViewType.Bar); 88 //Series series4= new Series("Series 4", ViewType.Line); 89 90 //// Add points to them, with their arguments different. 91 //series3.Points.Add(new SeriesPoint("A", 10)); 92 //series3.Points.Add(new SeriesPoint("B", 12)); 93 //series3.Points.Add(new SeriesPoint("C", 17)); 94 //series3.Points.Add(new SeriesPoint("D", 14)); 95 //series4.Points.Add(new SeriesPoint("I", 2500)); 96 //series4.Points.Add(new SeriesPoint("II", 3800)); 97 //series4.Points.Add(new SeriesPoint("III", 1500)); 98 //series4.Points.Add(new SeriesPoint("IV", 1300)); 99 100 //// Add both series to the chart. 101 //chartControl2.Series.AddRange(new Series[] { series3, series4 }); 102 103 //// Hide the legend (optional). 104 //chartControl2.Legend.Visible = false; 105 106 //// Cast the chart's diagram to the XYDiagram type, 107 //// to access its axes and panes. 108 //XYDiagram diagram2 = (XYDiagram)chartControl2.Diagram; 109 110 //// Add secondary axes to the diagram, and adjust their options. 111 //diagram2.SecondaryAxesX.Add(new SecondaryAxisX("My Axis X")); 112 //diagram2.SecondaryAxesY.Add(new SecondaryAxisY("My Axis Y")); 113 //diagram2.SecondaryAxesX[0].Alignment = AxisAlignment.Near; 114 //diagram2.SecondaryAxesY[0].Alignment = AxisAlignment.Near; 115 116 //// Add a new additional pane to the diagram. 117 //diagram2.Panes.Add(new XYDiagramPane("My Pane")); 118 119 //// Assign both the additional pane and, if required, 120 //// the secondary axes to the second series. 121 //LineSeriesView myView2 = (LineSeriesView)series2.View; 122 //myView2.AxisX = diagram2.SecondaryAxesX[0]; 123 //myView2.AxisY = diagram2.SecondaryAxesY[0]; 124 //// Note that the created pane has the zero index in the collection, 125 //// because the existing Default pane is a separate entity. 126 //myView2.Pane = diagram2.Panes[0]; 127 128 //// Customize the layout of the diagram's panes. 129 //diagram2.PaneDistance = 10; 130 //diagram2.PaneLayoutDirection = PaneLayoutDirection.Horizontal; 131 //diagram2.DefaultPane.SizeMode = PaneSizeMode.UseWeight; 132 //diagram2.DefaultPane.Weight = 1.2; 133 134 //// Add the chart to the form. 135 //chartControl2.Dock = DockStyle.Fill; 136 ////this.Controls.Add(chartControl1); 137 //this.xtraTabControl1.TabPages.Add("zbl兩個pane圖");//添加一個page 138 //tabPagesCount = this.xtraTabControl1.TabPages.Count - 1;//xtraTabControl2page的個數,為了刪除默認的,可以用ui界面的remove 139 //this.xtraTabControl1.TabPages[tabPagesCount].Controls.Add(chartControl2); 140 //this.xtraTabControl1.SelectedTabPageIndex = tabPagesCount; 141 142 #endregion 143 144 this.xtraTabControl1.TabPages.Add("三角函數圖");//添加一個page,在此之前可以直接用ui界面的本控件的remove屬性刪除默認的兩個page 145 //ChartControl lineChartControl = new ChartControl();//實例化一個ChartControl 146 //lineChartControl.Legend.UseCheckBoxes = true;//圖例可以勾選 147 //ChartTitle chartTitle1 = new ChartTitle(); 148 //chartTitle1.Text = "三角函數"; 149 //lineChartControl.Titles.Add(chartTitle1); 150 //lineChartControl.Series.Clear(); 151 //產生數據 152 List<double> xaxesList = new List<double>();//x軸數據 153 List<double> ySinList = new List<double>();//系列1-y軸數據 154 List<double> yCosList = new List<double>();//系列2-y軸數據 155 List<double> yTanList = new List<double>();//系列3-y軸數據 156 List<double> yCotList = new List<double>();//系列3-y軸數據 157 for (int i = 0; i < 20; i++) 158 { 159 xaxesList.Add((double)i); 160 ySinList.Add(Math.Sin(i)); 161 yCosList.Add(Math.Cos(i)); 162 yTanList.Add(Math.Sin(i) + Math.Cos(i)); 163 yCotList.Add(Math.Cos(i) - Math.Sin(i)); 164 } 165 //將所有系列的y值放入一個列表,這個列表是列表的列表 166 List<List<double>> YList = new List<List<double>>(); 167 YList.Add(ySinList); 168 YList.Add(yCosList); 169 YList.Add(yTanList); 170 YList.Add(yCotList); 171 //系列內容名稱 172 List<string> seriesTextList = new List<string>();//系列內容名稱 173 seriesTextList.Add("400kPa理論值cos 我有中文1"); 174 seriesTextList.Add("600kPa理論值cos 我有中文1"); 175 seriesTextList.Add("800kPa理論值cos+sin 我有中文1"); 176 seriesTextList.Add("800kPa理論值cos-sin 我有中文1"); 177 //系列名稱 178 List<Series> seriesNameList = new List<Series>(); 179 for (int i = 0; i < seriesTextList.Count; i++) 180 { 181 //完全建立一個系列,以后直接用就行了 182 seriesNameList.Add(new Series(seriesTextList[i], ViewType.Spline));//ScatterLine點划線,實驗值用這種,理論值用line 183 } 184 185 ////將系列假如chartControl 186 //for (int seriesIndex = 0; seriesIndex < seriesNameList.Count; seriesIndex++) 187 //{ 188 // ShowSeries(ref lineChartControl, seriesNameList[seriesIndex], seriesTextList[seriesIndex], xaxesList, YList[seriesIndex], seriesIndex); 189 190 //} 191 ////顯示 192 int tabPagesCount = this.xtraTabControl1.TabPages.Count - 1;//xtraTabControl2page的個數,為了刪除默認的,可以用ui界面的remove 193 //this.xtraTabControl1.TabPages[tabPagesCount].Controls.Add(lineChartControl);//將ChartControl這個控件添加到這個page中 194 //this.xtraTabControl1.SelectedTabPageIndex = tabPagesCount;//切換到這個page為選中的page 195 196 197 198 199 200 201 //嘗試第二個圖 202 this.xtraTabControl1.TabPages.Add("三角函數圖2");//添加一個page,在此之前可以直接用ui界面的本控件的remove屬性刪除默認的兩個page 203 ChartControl lineChartControl2 = new ChartControl();//實例化一個ChartControl 204 lineChartControl2.Legend.UseCheckBoxes = true;//圖例可以勾選 205 lineChartControl2.Series.Clear(); 206 207 //產生數據 208 List<double> xaxesList2 = new List<double>();//x軸數據 209 List<double> ySinList2 = new List<double>();//系列1-y軸數據 210 List<double> yCosList2 = new List<double>();//系列2-y軸數據 211 List<double> yTanList2 = new List<double>();//系列3-y軸數據 212 for (int i = 0; i < 20; i++) 213 { 214 xaxesList2.Add((double)i); 215 ySinList2.Add(Math.Sin(i)); 216 yCosList2.Add(Math.Cos(i)); 217 yTanList2.Add(Math.Sin(i) + 2 * Math.Cos(i)); 218 } 219 //將所有系列的y值放入一個列表,這個列表是列表的列表 220 List<List<double>> YList2 = new List<List<double>>(); 221 YList2.Add(ySinList2); 222 YList2.Add(yCosList2); 223 YList2.Add(yTanList2); 224 //系列內容名稱 225 List<string> seriesTextList2 = new List<string>();//系列內容名稱 226 seriesTextList2.Add("400kPa實驗值cos 我有中文2"); 227 seriesTextList2.Add("600kPa實驗值sin 我有中文2"); 228 seriesTextList2.Add("800kPa實驗值2cos+sin我有中文2"); 229 //系列名稱 230 List<Series> seriesNameList2 = new List<Series>(); 231 for (int i = 0; i < 3; i++) 232 { 233 //完全建立一個系列,以后直接用就行了 234 seriesNameList2.Add(new Series(seriesTextList2[i], ViewType.Spline));//ScatterLine點划線,實驗值用這種,理論值用line 235 236 } 237 //合成一個系列 238 List<string> seriesTextList12 = new List<string>(); 239 seriesTextList12.AddRange(seriesTextList); 240 seriesTextList12.AddRange(seriesTextList2); 241 List<Series> seriesNameList12 = new List<Series>(); 242 seriesNameList12.AddRange(seriesNameList); 243 seriesNameList12.AddRange(seriesNameList2); 244 List<List<double>> xaxesList12 = new List<List<double>>();//x軸數據 245 xaxesList12.Add(xaxesList); 246 xaxesList12.Add(xaxesList); 247 xaxesList12.Add(xaxesList); 248 xaxesList12.Add(xaxesList2); 249 xaxesList12.Add(xaxesList2); 250 xaxesList12.Add(xaxesList2); 251 xaxesList12.Add(xaxesList2); 252 List<List<double>> YList12 = new List<List<double>>(); 253 YList12.AddRange(YList); 254 YList12.AddRange(YList2); 255 256 //將系列假如chartControl 257 for (int seriesIndex = 0; seriesIndex < seriesNameList12.Count; seriesIndex++) 258 { 259 //ShowSeries(ref lineChartControl2, seriesNameList2[seriesIndex], seriesTextList2[seriesIndex], xaxesList2, YList2[seriesIndex], seriesIndex); 260 ////ShowSeriesTheory(ref lineChartControl2, seriesNameList[seriesIndex], seriesTextList[seriesIndex], xaxesList, YList[seriesIndex], seriesIndex);//This is an error!!!!!!!!!!!!!!!!!!!!!! 261 ShowSeries(ref lineChartControl2, seriesNameList12[seriesIndex], seriesTextList12[seriesIndex], xaxesList12[seriesIndex], YList12[seriesIndex], seriesIndex); 262 } 263 264 //顯示 265 tabPagesCount = this.xtraTabControl1.TabPages.Count - 1;//xtraTabControl2page的個數,為了刪除默認的,可以用ui界面的remove 266 this.xtraTabControl1.TabPages[tabPagesCount].Controls.Add(lineChartControl2);//將ChartControl這個控件添加到這個page中 267 this.xtraTabControl1.SelectedTabPageIndex = tabPagesCount;//切換到這個page為選中的page 268 269 270 271 272 //嘗試第三個圖 273 this.xtraTabControl1.TabPages.Add("三角函數圖3");//添加一個page,在此之前可以直接用ui界面的本控件的remove屬性刪除默認的兩個page 274 ChartControl lineChartControl3 = new ChartControl();//實例化一個ChartControl 275 lineChartControl3.Legend.UseCheckBoxes = true;//圖例可以勾選 276 lineChartControl3.Series.Clear(); 277 //public Series[] SeriesSerializable { get; set; } 278 279 //產生數據 280 List<double> xaxesList3 = new List<double>();//x軸數據 281 List<double> ySinList3 = new List<double>();//系列1-y軸數據 282 List<double> yCosList3 = new List<double>();//系列2-y軸數據 283 List<double> yTanList3 = new List<double>();//系列3-y軸數據 284 for (int i = 0; i < 20; i++) 285 { 286 xaxesList3.Add((double)i); 287 ySinList3.Add(Math.Sin(i)); 288 yCosList3.Add(Math.Cos(i)); 289 yTanList3.Add(Math.Sin(i) + 2 * Math.Cos(i)); 290 } 291 //將所有系列的y值放入一個列表,這個列表是列表的列表 292 List<List<double>> YList3 = new List<List<double>>(); 293 YList3.Add(ySinList3); 294 YList3.Add(yCosList3); 295 YList3.Add(yTanList3); 296 //系列內容名稱 297 List<string> seriesTextList3 = new List<string>();//系列內容名稱 298 seriesTextList3.Add("cos 我有中文3"); 299 seriesTextList3.Add("sin 我有中文3"); 300 seriesTextList3.Add("2cos+sin我有中文3"); 301 //系列名稱 302 List<Series> seriesNameList3 = new List<Series>(); 303 for (int i = 0; i < 3; i++) 304 { 305 //完全建立一個系列,以后直接用就行了 306 seriesNameList3.Add(new Series(seriesTextList3[i], ViewType.Spline));//ScatterLine點划線,實驗值用這種,理論值用line 307 308 } 309 //將系列假如chartControl 310 for (int seriesIndex = 0; seriesIndex < 3; seriesIndex++) 311 { 312 313 //ShowSeries(ref lineChartControl3, seriesNameList3[seriesIndex], seriesTextList3[seriesIndex], xaxesList3, YList3[seriesIndex], seriesIndex); 314 // ShowSeriesTheory(ref lineChartControl3, seriesNameList[seriesIndex], seriesTextList[seriesIndex], xaxesList, YList[seriesIndex], seriesIndex);//This is an error!!!!!!!!!!!!!!!!!!!!!! 315 //ShowSeries(ref lineChartControl3, seriesNameList[seriesIndex], seriesTextList[seriesIndex], xaxesList, YList[seriesIndex], seriesIndex); 316 ShowSeries(ref lineChartControl3, seriesNameList12[seriesIndex], seriesTextList12[seriesIndex], xaxesList12[seriesIndex], YList12[seriesIndex], seriesIndex); 317 } 318 319 //顯示 320 tabPagesCount = this.xtraTabControl1.TabPages.Count - 1;//xtraTabControl2page的個數,為了刪除默認的,可以用ui界面的remove 321 this.xtraTabControl1.TabPages[tabPagesCount].Controls.Add(lineChartControl3);//將ChartControl這個控件添加到這個page中 322 this.xtraTabControl1.SelectedTabPageIndex = tabPagesCount;//切換到這個page為選中的page 323 324 325 } 326 public void ShowSeries(ref ChartControl lineChartControl, Series seriesName, string seriesText, List<double> xAxes, 327 List<double> yAxes, int iMarkerKind) 328 { 329 330 //seriesName = new Series(seriesText, ViewType.ScatterLine);//新建立一個系列 331 seriesName.ArgumentScaleType = ScaleType.Numerical;//x軸數據類型,為數字 332 ((LineSeriesView)seriesName.View).LineMarkerOptions.Kind = (MarkerKind)((iMarkerKind % 9));//mark類型 MarkerKind.Triangle 333 ((LineSeriesView)seriesName.View).MarkerVisibility = DevExpress.Utils.DefaultBoolean.True; 334 335 ((LineSeriesView)seriesName.View).LineStyle.DashStyle = DashStyle.Dash;//線型 336 for (int pointIndex = 0; pointIndex < xAxes.Count; pointIndex++) 337 { 338 seriesName.Points.Add(new SeriesPoint(xAxes[pointIndex], yAxes[pointIndex])); 339 } 340 //lineChartControl.Series.Clear(); 341 342 lineChartControl.Series.Add(seriesName);//往ChartControl控件上添加系列 343 lineChartControl.Legend.Visible = true;//圖例可見 344 ((XYDiagram)lineChartControl.Diagram).Rotated = false;//ChartControl控件不旋轉 345 lineChartControl.Dock = DockStyle.Fill;//ChartControl控件在父控件內填滿平鋪 346 //lineChartControl.Size = new System.Drawing.Size(400, 250); 347 //this.Controls.Add(lineChartControl); 348 349 } 350 351 // public void ShowSeriesTheory(ref ChartControl lineChartControl, Series seriesName, string seriesText, List<double> xAxes, 352 //List<double> yAxes, int iMarkerKind) 353 // { 354 355 // //seriesName = new Series(seriesText, ViewType.ScatterLine);//新建立一個系列 356 // seriesName.ArgumentScaleType = ScaleType.Numerical;//x軸數據類型,為數字 357 // ((LineSeriesView)seriesName.View).LineMarkerOptions.Kind = (MarkerKind)((iMarkerKind % 9));//mark類型 MarkerKind.Triangle 358 // ((LineSeriesView)seriesName.View).MarkerVisibility = DevExpress.Utils.DefaultBoolean.True; 359 360 // ((LineSeriesView)seriesName.View).LineStyle.DashStyle = DashStyle.Dash;//線型 361 // for (int pointIndex = 0; pointIndex < xAxes.Count; pointIndex++) 362 // { 363 // seriesName.Points.Add(new SeriesPoint(xAxes[pointIndex], yAxes[pointIndex])); 364 // } 365 // lineChartControl.Series.Add(seriesName);//往ChartControl控件上添加系列 366 // lineChartControl.Legend.Visible = true;//圖例可見 367 // ((XYDiagram)lineChartControl.Diagram).Rotated = false;//ChartControl控件不旋轉 368 // lineChartControl.Dock = DockStyle.Fill;//ChartControl控件在父控件內填滿平鋪 369 // //lineChartControl.Size = new System.Drawing.Size(400, 250); 370 // //this.Controls.Add(lineChartControl); 371 372 // } 373 374 private void Form1_Load(object sender, EventArgs e) 375 { 376 377 } 378 } 379 }
1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Windows.Forms; 9 using DevExpress.XtraCharts; 10 11 namespace BindIndividualSeriesRuntimeCS 12 { 13 public partial class Form1 : DevExpress.XtraEditors.XtraForm 14 { 15 public Form1() 16 { 17 InitializeComponent(); 18 } 19 private DataTable CreateChartData(int rowCount) 20 { 21 // Create an empty table. 22 DataTable table = new DataTable("Table1"); 23 24 // Add two columns to the table. 25 table.Columns.Add("Argument", typeof(Int32)); 26 table.Columns.Add("Value", typeof(Int32)); 27 28 // Add data rows to the table. 29 Random rnd = new Random(); 30 DataRow row = null; 31 for (int i = 0; i < rowCount; i++) 32 { 33 row = table.NewRow(); 34 row["Argument"] = i; 35 row["Value"] = rnd.Next(100); 36 table.Rows.Add(row); 37 } 38 39 return table; 40 } 41 42 private void Form1_Load(object sender, EventArgs e) 43 { 44 45 // Create a chart. 46 ChartControl chart = new ChartControl(); 47 48 // Create an empty Bar series and add it to the chart. 49 Series series = new Series("Series1", ViewType.Spline); 50 chart.Series.Add(series); 51 52 // Generate a data table and bind the series to it. 53 series.DataSource = CreateChartData(50); 54 55 // Specify data members to bind the series. 56 series.ArgumentScaleType = ScaleType.Numerical; 57 series.ArgumentDataMember = "Argument"; 58 series.ValueScaleType = ScaleType.Numerical; 59 series.ValueDataMembers.AddRange(new string[] { "Value" }); 60 61 series = new Series("Series2", ViewType.Spline); 62 chart.Series.Add(series); 63 64 // Generate a data table and bind the series to it. 65 series.DataSource = CreateChartData(50); 66 67 // Specify data members to bind the series. 68 series.ArgumentScaleType = ScaleType.Numerical; 69 series.ArgumentDataMember = "Argument"; 70 series.ValueScaleType = ScaleType.Numerical; 71 series.ValueDataMembers.AddRange(new string[] { "Value" }); 72 73 series = new Series("Series3", ViewType.Spline); 74 chart.Series.Add(series); 75 76 // Generate a data table and bind the series to it. 77 series.DataSource = CreateChartData(50); 78 79 // Specify data members to bind the series. 80 series.ArgumentScaleType = ScaleType.Numerical; 81 series.ArgumentDataMember = "Argument"; 82 series.ValueScaleType = ScaleType.Numerical; 83 series.ValueDataMembers.AddRange(new string[] { "Value" }); 84 85 86 // Set some properties to get a nice-looking chart. 87 //((SideBySideBarSeriesView)series.View).ColorEach = true; 88 //((XYDiagram)chart.Diagram).AxisY.Visibility = DevExpress.Utils.DefaultBoolean.False; 89 //chart.Legend.Visibility = DevExpress.Utils.DefaultBoolean.False; 90 91 // Dock the chart into its parent and add it to the current form. 92 chart.Dock = DockStyle.Fill; 93 this.xtraTabControl1.TabPages[0].Controls.Add(chart); 94 95 96 97 98 ChartControl chart2 = new ChartControl(); 99 100 // Create an empty Bar series and add it to the chart. 101 series = new Series("Series1", ViewType.Spline); 102 chart2.Series.Add(series); 103 104 // Generate a data table and bind the series to it. 105 series.DataSource = CreateChartData(50); 106 107 // Specify data members to bind the series. 108 series.ArgumentScaleType = ScaleType.Numerical; 109 series.ArgumentDataMember = "Argument"; 110 series.ValueScaleType = ScaleType.Numerical; 111 series.ValueDataMembers.AddRange(new string[] { "Value" }); 112 113 series = new Series("Series2", ViewType.Spline); 114 chart2.Series.Add(series); 115 116 // Generate a data table and bind the series to it. 117 series.DataSource = CreateChartData(50); 118 119 // Specify data members to bind the series. 120 series.ArgumentScaleType = ScaleType.Numerical; 121 series.ArgumentDataMember = "Argument"; 122 series.ValueScaleType = ScaleType.Numerical; 123 series.ValueDataMembers.AddRange(new string[] { "Value" }); 124 125 series = new Series("Series3", ViewType.Spline); 126 chart2.Series.Add(series); 127 128 // Generate a data table and bind the series to it. 129 series.DataSource = CreateChartData(50); 130 131 // Specify data members to bind the series. 132 series.ArgumentScaleType = ScaleType.Numerical; 133 series.ArgumentDataMember = "Argument"; 134 series.ValueScaleType = ScaleType.Numerical; 135 series.ValueDataMembers.AddRange(new string[] { "Value" }); 136 137 138 // Set some properties to get a nice-looking chart. 139 //((SideBySideBarSeriesView)series.View).ColorEach = true; 140 //((XYDiagram)chart.Diagram).AxisY.Visibility = DevExpress.Utils.DefaultBoolean.False; 141 //chart.Legend.Visibility = DevExpress.Utils.DefaultBoolean.False; 142 143 // Dock the chart into its parent and add it to the current form. 144 chart2.Dock = DockStyle.Fill; 145 this.xtraTabControl1.TabPages[1].Controls.Add(chart2); 146 147 148 149 } 150 } 151 }
1 using DevExpress.XtraCharts; 2 using System; 3 using System.Collections.Generic; 4 using System.ComponentModel; 5 using System.Data; 6 using System.Drawing; 7 using System.Linq; 8 using System.Text; 9 using System.Windows.Forms; 10 11 namespace WindowsFormsApplication2devexpressChart 12 { 13 public partial class Form1 : Form 14 { 15 public Form1() 16 { 17 InitializeComponent(); 18 } 19 // public XYDiagramPaneCollection Panes { get; }//https://documentation.devexpress.com/CoreLibraries/DevExpress.XtraCharts.XYDiagram2D.Panes.property 20 private void button1_Click(object sender, EventArgs e) 21 { 22 #region 23 //int tabPagesCount = 0; 24 //ChartControl chartControl1 = new ChartControl(); 25 26 //// Create two series. 27 //Series series1 = new Series("Series 1", ViewType.Bar); 28 //Series series2 = new Series("Series 2", ViewType.Line); 29 30 //// Add points to them, with their arguments different. 31 //series1.Points.Add(new SeriesPoint("A", 10)); 32 //series1.Points.Add(new SeriesPoint("B", 12)); 33 //series1.Points.Add(new SeriesPoint("C", 17)); 34 //series1.Points.Add(new SeriesPoint("D", 14)); 35 //series2.Points.Add(new SeriesPoint("I", 2500)); 36 //series2.Points.Add(new SeriesPoint("II", 3800)); 37 //series2.Points.Add(new SeriesPoint("III", 1500)); 38 //series2.Points.Add(new SeriesPoint("IV", 1300)); 39 40 //// Add both series to the chart. 41 //chartControl1.Series.AddRange(new Series[] { series1, series2 }); 42 43 //// Hide the legend (optional). 44 //chartControl1.Legend.Visible = false; 45 46 //// Cast the chart's diagram to the XYDiagram type, 47 //// to access its axes and panes. 48 //XYDiagram diagram = (XYDiagram)chartControl1.Diagram; 49 50 //// Add secondary axes to the diagram, and adjust their options. 51 //diagram.SecondaryAxesX.Add(new SecondaryAxisX("My Axis X")); 52 //diagram.SecondaryAxesY.Add(new SecondaryAxisY("My Axis Y")); 53 //diagram.SecondaryAxesX[0].Alignment = AxisAlignment.Near; 54 //diagram.SecondaryAxesY[0].Alignment = AxisAlignment.Near; 55 56 //// Add a new additional pane to the diagram. 57 //diagram.Panes.Add(new XYDiagramPane("My Pane")); 58 59 //// Assign both the additional pane and, if required, 60 //// the secondary axes to the second series. 61 //LineSeriesView myView = (LineSeriesView)series2.View; 62 //myView.AxisX = diagram.SecondaryAxesX[0]; 63 //myView.AxisY = diagram.SecondaryAxesY[0]; 64 //// Note that the created pane has the zero index in the collection, 65 //// because the existing Default pane is a separate entity. 66 //myView.Pane = diagram.Panes[0]; 67 68 //// Customize the layout of the diagram's panes. 69 //diagram.PaneDistance = 10; 70 //diagram.PaneLayoutDirection = PaneLayoutDirection.Horizontal; 71 //diagram.DefaultPane.SizeMode = PaneSizeMode.UseWeight; 72 //diagram.DefaultPane.Weight = 1.2; 73 74 //// Add the chart to the form. 75 //chartControl1.Dock = DockStyle.Fill; 76 ////this.Controls.Add(chartControl1); 77 //this.xtraTabControl1.TabPages.Add("zbl兩個pane圖");//添加一個page 78 //tabPagesCount = this.xtraTabControl1.TabPages.Count-1;//xtraTabControl2page的個數,為了刪除默認的,可以用ui界面的remove 79 //this.xtraTabControl1.TabPages[tabPagesCount].Controls.Add(chartControl1); 80 //this.xtraTabControl1.SelectedTabPageIndex = tabPagesCount; 81 82 83 //// 84 //ChartControl chartControl2 = new ChartControl(); 85 86 //// Create two series. 87 //Series series3 = new Series("Series 3", ViewType.Bar); 88 //Series series4= new Series("Series 4", ViewType.Line); 89 90 //// Add points to them, with their arguments different. 91 //series3.Points.Add(new SeriesPoint("A", 10)); 92 //series3.Points.Add(new SeriesPoint("B", 12)); 93 //series3.Points.Add(new SeriesPoint("C", 17)); 94 //series3.Points.Add(new SeriesPoint("D", 14)); 95 //series4.Points.Add(new SeriesPoint("I", 2500)); 96 //series4.Points.Add(new SeriesPoint("II", 3800)); 97 //series4.Points.Add(new SeriesPoint("III", 1500)); 98 //series4.Points.Add(new SeriesPoint("IV", 1300)); 99 100 //// Add both series to the chart. 101 //chartControl2.Series.AddRange(new Series[] { series3, series4 }); 102 103 //// Hide the legend (optional). 104 //chartControl2.Legend.Visible = false; 105 106 //// Cast the chart's diagram to the XYDiagram type, 107 //// to access its axes and panes. 108 //XYDiagram diagram2 = (XYDiagram)chartControl2.Diagram; 109 110 //// Add secondary axes to the diagram, and adjust their options. 111 //diagram2.SecondaryAxesX.Add(new SecondaryAxisX("My Axis X")); 112 //diagram2.SecondaryAxesY.Add(new SecondaryAxisY("My Axis Y")); 113 //diagram2.SecondaryAxesX[0].Alignment = AxisAlignment.Near; 114 //diagram2.SecondaryAxesY[0].Alignment = AxisAlignment.Near; 115 116 //// Add a new additional pane to the diagram. 117 //diagram2.Panes.Add(new XYDiagramPane("My Pane")); 118 119 //// Assign both the additional pane and, if required, 120 //// the secondary axes to the second series. 121 //LineSeriesView myView2 = (LineSeriesView)series2.View; 122 //myView2.AxisX = diagram2.SecondaryAxesX[0]; 123 //myView2.AxisY = diagram2.SecondaryAxesY[0]; 124 //// Note that the created pane has the zero index in the collection, 125 //// because the existing Default pane is a separate entity. 126 //myView2.Pane = diagram2.Panes[0]; 127 128 //// Customize the layout of the diagram's panes. 129 //diagram2.PaneDistance = 10; 130 //diagram2.PaneLayoutDirection = PaneLayoutDirection.Horizontal; 131 //diagram2.DefaultPane.SizeMode = PaneSizeMode.UseWeight; 132 //diagram2.DefaultPane.Weight = 1.2; 133 134 //// Add the chart to the form. 135 //chartControl2.Dock = DockStyle.Fill; 136 ////this.Controls.Add(chartControl1); 137 //this.xtraTabControl1.TabPages.Add("zbl兩個pane圖");//添加一個page 138 //tabPagesCount = this.xtraTabControl1.TabPages.Count - 1;//xtraTabControl2page的個數,為了刪除默認的,可以用ui界面的remove 139 //this.xtraTabControl1.TabPages[tabPagesCount].Controls.Add(chartControl2); 140 //this.xtraTabControl1.SelectedTabPageIndex = tabPagesCount; 141 142 #endregion 143 144 this.xtraTabControl1.TabPages.Add("三角函數圖");//添加一個page,在此之前可以直接用ui界面的本控件的remove屬性刪除默認的兩個page 145 ChartControl lineChartControl = new ChartControl();//實例化一個ChartControl 146 // Cast the chart's diagram to the XYDiagram type, 147 // to access its axes and panes. 148 XYDiagram diagram = (XYDiagram)lineChartControl.Diagram;// 149 //diagram.SecondaryAxesX.Add(new SecondaryAxisX("My Axis X")); 150 //diagram.SecondaryAxesY.Add(new SecondaryAxisY("My Axis Y")); 151 //diagram.SecondaryAxesX[0].Alignment = AxisAlignment.Near; 152 //diagram.SecondaryAxesY[0].Alignment = AxisAlignment.Near; 153 //// Add a new additional pane to the diagram. 154 //diagram.Panes.Add(new XYDiagramPane("My Pane")); 155 156 157 158 159 lineChartControl.Legend.UseCheckBoxes = true;//圖例可以勾選 160 lineChartControl.Series.Clear(); 161 //產生數據 162 List<double> xaxesList = new List<double>();//x軸數據 163 List<double> ySinList = new List<double>();//系列1-y軸數據 164 List<double> yCosList = new List<double>();//系列2-y軸數據 165 List<double> yTanList = new List<double>();//系列3-y軸數據 166 for (int i = 0; i < 20; i++) 167 { 168 xaxesList.Add(i); 169 ySinList.Add(Math.Sin(i)); 170 yCosList.Add(Math.Cos(i)); 171 yTanList.Add(Math.Sin(i) + Math.Cos(i)); 172 } 173 //將所有系列的y值放入一個列表,這個列表是列表的列表 174 List<List<double>> YList = new List<List<double>>(); 175 YList.Add(ySinList); 176 YList.Add(yCosList); 177 YList.Add(yTanList); 178 //系列內容名稱 179 List<string> seriesTextList = new List<string>();//系列內容名稱 180 seriesTextList.Add("400kPa理論值cos 我有中文"); 181 seriesTextList.Add("600kPa理論值cos 我有中文"); 182 seriesTextList.Add("800kPa理論值cos+sin 我有中文"); 183 //系列名稱 184 List<Series> seriesNameList = new List<Series>(); 185 for (int i = 0; i < 3; i++) 186 { 187 //完全建立一個系列,以后直接用就行了 188 seriesNameList.Add(new Series(seriesTextList[i], ViewType.Spline));//ScatterLine點划線,實驗值用這種,理論值用line 189 } 190 //將系列假如chartControl 191 for (int seriesIndex = 0; seriesIndex < 3; seriesIndex++) 192 { 193 ShowSeries(ref lineChartControl, diagram,seriesNameList[seriesIndex], seriesTextList[seriesIndex], xaxesList, YList[seriesIndex], seriesIndex); 194 } 195 //顯示 196 int tabPagesCount = this.xtraTabControl1.TabPages.Count - 1;//xtraTabControl2page的個數,為了刪除默認的,可以用ui界面的remove 197 this.xtraTabControl1.TabPages[tabPagesCount].Controls.Add(lineChartControl);//將ChartControl這個控件添加到這個page中 198 this.xtraTabControl1.SelectedTabPageIndex = tabPagesCount;//切換到這個page為選中的page 199 200 201 202 203 204 205 //嘗試第二個圖 206 this.xtraTabControl1.TabPages.Add("三角函數圖2");//添加一個page,在此之前可以直接用ui界面的本控件的remove屬性刪除默認的兩個page 207 ChartControl lineChartControl2 = lineChartControl;// new ChartControl();//實例化一個ChartControl 208 lineChartControl2.Legend.UseCheckBoxes = true;//圖例可以勾選 209 lineChartControl2.Series.Clear(); 210 211 //產生數據 212 List<double> xaxesList2 = new List<double>();//x軸數據 213 List<double> ySinList2 = new List<double>();//系列1-y軸數據 214 List<double> yCosList2 = new List<double>();//系列2-y軸數據 215 List<double> yTanList2 = new List<double>();//系列3-y軸數據 216 for (int i = 0; i < 20; i++) 217 { 218 xaxesList2.Add(i); 219 ySinList2.Add(Math.Sin(i)); 220 yCosList2.Add(Math.Cos(i)); 221 yTanList2.Add(Math.Sin(i) + 2 * Math.Cos(i)); 222 } 223 //將所有系列的y值放入一個列表,這個列表是列表的列表 224 List<List<double>> YList2 = new List<List<double>>(); 225 YList2.Add(ySinList2); 226 YList2.Add(yCosList2); 227 YList2.Add(yTanList2); 228 //系列內容名稱 229 List<string> seriesTextList2 = new List<string>();//系列內容名稱 230 seriesTextList2.Add("cos 我有中文"); 231 seriesTextList2.Add("sin 我有中文"); 232 seriesTextList2.Add("2cos+sin我有中文"); 233 //系列名稱 234 List<Series> seriesNameList2 = new List<Series>(); 235 for (int i = 0; i < 3; i++) 236 { 237 //完全建立一個系列,以后直接用就行了 238 seriesNameList2.Add(new Series(seriesTextList2[i], ViewType.Spline));//ScatterLine點划線,實驗值用這種,理論值用line 239 240 } 241 //將系列假如chartControl 242 for (int seriesIndex = 0; seriesIndex < 3; seriesIndex++) 243 { 244 ShowSeriesTheory(ref lineChartControl2, diagram,seriesNameList2[seriesIndex], seriesTextList2[seriesIndex], xaxesList2, YList2[seriesIndex], seriesIndex); 245 ShowSeries(ref lineChartControl2,diagram, seriesNameList[seriesIndex], seriesTextList[seriesIndex], xaxesList, YList[seriesIndex], seriesIndex);//This is an error!!!!!!!!!!!!!!!!!!!!!! 246 247 } 248 249 //顯示 250 tabPagesCount = this.xtraTabControl1.TabPages.Count - 1;//xtraTabControl2page的個數,為了刪除默認的,可以用ui界面的remove 251 this.xtraTabControl1.TabPages[tabPagesCount].Controls.Add(lineChartControl2);//將ChartControl這個控件添加到這個page中 252 this.xtraTabControl1.SelectedTabPageIndex = tabPagesCount;//切換到這個page為選中的page 253 254 255 //object o=diagram.DefaultPane; 256 } 257 public void ShowSeries(ref ChartControl lineChartControl, XYDiagram diagram, Series seriesName, string seriesText, List<double> xAxes, 258 List<double> yAxes, int iMarkerKind) 259 { 260 seriesName.Points.Clear(); 261 //seriesName = new Series(seriesText, ViewType.ScatterLine);//新建立一個系列 262 seriesName.ArgumentScaleType = ScaleType.Numerical;//x軸數據類型,為數字 263 ((LineSeriesView)seriesName.View).LineMarkerOptions.Kind = (MarkerKind)((iMarkerKind % 9));//mark類型 MarkerKind.Triangle 264 ((LineSeriesView)seriesName.View).MarkerVisibility = DevExpress.Utils.DefaultBoolean.True; 265 266 ((LineSeriesView)seriesName.View).LineStyle.DashStyle = DashStyle.Dash;//線型 267 for (int pointIndex = 0; pointIndex < xAxes.Count; pointIndex++) 268 { 269 seriesName.Points.Add(new SeriesPoint(xAxes[pointIndex], yAxes[pointIndex])); 270 } 271 //seriesName.IsAutoCreated(); 272 LineSeriesView myView = (LineSeriesView)seriesName.View; 273 //myView.Pane = diagram.DefaultPane; 274 lineChartControl.Series.Add(seriesName);//往ChartControl控件上添加系列 275 diagram = (XYDiagram)lineChartControl.Diagram; 276 myView.Pane = diagram.DefaultPane; 277 lineChartControl.Legend.Visible = true;//圖例可見 278 ((XYDiagram)lineChartControl.Diagram).Rotated = false;//ChartControl控件不旋轉 279 lineChartControl.Dock = DockStyle.Fill;//ChartControl控件在父控件內填滿平鋪 280 //lineChartControl.Size = new System.Drawing.Size(400, 250); 281 //this.Controls.Add(lineChartControl); 282 seriesName.Points.Clear(); 283 284 } 285 286 public void ShowSeriesTheory(ref ChartControl lineChartControl, XYDiagram diagram, Series seriesName, string seriesText, List<double> xAxes, 287 List<double> yAxes, int iMarkerKind) 288 { 289 seriesName.Points.Clear(); 290 //seriesName = new Series(seriesText, ViewType.ScatterLine);//新建立一個系列 291 seriesName.ArgumentScaleType = ScaleType.Numerical;//x軸數據類型,為數字 292 ((LineSeriesView)seriesName.View).LineMarkerOptions.Kind = (MarkerKind)((iMarkerKind %8));//mark類型 MarkerKind.Triangle 293 ((LineSeriesView)seriesName.View).MarkerVisibility = DevExpress.Utils.DefaultBoolean.True; 294 295 ((LineSeriesView)seriesName.View).LineStyle.DashStyle = DashStyle.Dash;//線型 296 //lineChartControl.Series.Add(seriesName.Name, ViewType.Spline); 297 for (int pointIndex = 0; pointIndex < xAxes.Count; pointIndex++) 298 { 299 seriesName.Points.Add(new SeriesPoint(xAxes[pointIndex], yAxes[pointIndex])); 300 } 301 LineSeriesView myView = (LineSeriesView)seriesName.View; 302 //myView.Pane = diagram.DefaultPane; //DevExpress.XtraCharts.SeriesBase.View property 303 304 305 306 lineChartControl.Series.Add(seriesName);//往ChartControl控件上添加系列 307 diagram = (XYDiagram)lineChartControl.Diagram; 308 // myView.Pane = diagram.DefaultPane; 309 lineChartControl.Legend.Visible = true;//圖例可見 310 311 ((XYDiagram)lineChartControl.Diagram).Rotated = false;//ChartControl控件不旋轉 312 lineChartControl.Dock = DockStyle.Fill;//ChartControl控件在父控件內填滿平鋪 313 //lineChartControl.Size = new System.Drawing.Size(400, 250); 314 //this.Controls.Add(lineChartControl); 315 seriesName.Points.Clear(); 316 } 317 318 private void Form1_Load(object sender, EventArgs e) 319 { 320 321 } 322 } 323 }
