private double[] f_绘制性能曲线(XYGraph 曲线控件, string 需要进行绘制的曲线ID, Grid 表格控件, string 采集样本_流量数据列名, string 采集样本_Y轴数据列名, int 拟合次数,int 分割点数) { List<double> 曲线X坐标集合 = new List<double>(); List<double> 曲线Y坐标集合 = new List<double>(); double[] 方程常量组; List<double> 拟合曲线X坐标集合; List<double> 拟合曲线Y坐标集合; for (int i = 0; i < 表格控件.ExportBandView.RowCount; i++) { double X = Convert.ToSingle(((DataRowView)表格控件.ExportBandView.GetRow(i))[采集样本_流量数据列名]); double Y = Convert.ToSingle(((DataRowView)表格控件.ExportBandView.GetRow(i))[采集样本_Y轴数据列名]); 曲线X坐标集合.Add(X); 曲线Y坐标集合.Add(Y); } if (曲线X坐标集合.Count == 0) return null; 辅助库.CurveFitting.f_曲线拟合(曲线X坐标集合.ToArray(), 曲线Y坐标集合.ToArray(), 拟合次数, 分割点数, out 拟合曲线X坐标集合, out 拟合曲线Y坐标集合, out 方程常量组); //_曲线拟合.f_曲线拟合(曲线X坐标集合, 曲线Y坐标集合, 4,1000 ,out 拟合曲线X坐标集合, out 拟合曲线Y坐标集合); for (int j = 0; j < 曲线控件.Graph.Plots.Count; j++) { if (曲线控件.Graph.Plots[j].Tag.ToString().Equals(需要进行绘制的曲线ID)) { 曲线控件.Graph.Plots[j].PlotXY(拟合曲线X坐标集合.ToArray(), 拟合曲线Y坐标集合.ToArray()); } } return 方程常量组; }
private bool 更新流量和汽蚀余量(Grid 表格控件,Decimal 批次ID) { double 流量=0; double 扬程 = 0; if (表格控件.ExportBandView.RowCount == 1) { 流量 = Convert.ToDouble(((DataRowView)表格控件.ExportBandView.GetRow(0))["流量"]); 扬程 = Convert.ToDouble(((DataRowView)表格控件.ExportBandView.GetRow(0))["扬程"]); } else if (表格控件.ExportBandView.RowCount == 0) { 流量 = 0; 扬程 = 0; } else { 计算临界值(批次ID); return false; } xyGraph1.f_更新曲线标签(批次ID.ToString(), 流量); db_更新流量和扬程(批次ID, 流量, 扬程); return true; }
private void f_绘制影子性能曲线(XYGraph 曲线控件, string 需要进行绘制的曲线ID, Grid 表格控件, string 采集样本_流量数据列名, string 采集样本_Y轴数据列名) { List<double> 曲线X坐标对集合 = new List<double>(); List<double> 曲线Y坐标对集合 = new List<double>(); for (int i = 0; i < 表格控件.ExportBandView.RowCount; i++) { double X = Convert.ToSingle( ((DataRowView)表格控件.ExportBandView.GetRow(i))[采集样本_流量数据列名]); double Y = Convert.ToSingle(((DataRowView)表格控件.ExportBandView.GetRow(i))[采集样本_Y轴数据列名]); 曲线X坐标对集合.Add(X); 曲线Y坐标对集合.Add(Y); } for(int j=0;j<曲线控件.Graph.Plots.Count;j++) { if (曲线控件.Graph.Plots[j].Tag.ToString().Equals(需要进行绘制的曲线ID)) { 曲线控件.Graph.Plots[j].PlotXY(曲线X坐标对集合.ToArray(), 曲线Y坐标对集合.ToArray()); } } }
private void f_绘制采集曲线(XYGraph 曲线控件, string 需要进行绘制的曲线ID, Grid 表格控件, string 采集样本_Y轴数据列名) { List<double> 曲线X坐标对集合 = new List<double>(); List<double> 曲线Y坐标对集合 = new List<double>(); 曲线控件.汽蚀余量X轴 = 0; 曲线控件.汽蚀余量Y轴 = 0; DataTable datatable汽蚀试验 = 数据库操作类.GetTableBySql("select * from 汽蚀试验 ORDER by 汽蚀余量 DESC"); foreach (DataRow dr in datatable汽蚀试验.Rows) { if (需要进行绘制的曲线ID.Equals(Convert.ToString(dr["批次编号"]))) { double n流量 = Convert.ToDouble(dr["流量"]); double n温度 = Convert.ToDouble(dr["温度"]); double n进口表压 = Convert.ToDouble(dr["进口压力"]); double 汽蚀余量 = Convert.ToDouble(dr["汽蚀余量"]); double Y = Convert.ToDouble(dr[采集样本_Y轴数据列名]); 曲线X坐标对集合.Add(汽蚀余量); 曲线Y坐标对集合.Add(Y); } } //显示曲线(曲线控件, 需要进行绘制的曲线ID); for (int j = 0; j < 曲线控件.Graph.Plots.Count; j++) { if ((曲线控件.Graph.Plots[j].Tag.ToString().Equals(需要进行绘制的曲线ID)) && ((曲线X坐标对集合.Count > 0) && (曲线Y坐标对集合.Count > 0))) { 曲线控件.Graph.Plots[j].Visible = true; 曲线控件.Graph.Plots[j].PlotXY(曲线X坐标对集合.ToArray(), 曲线Y坐标对集合.ToArray()); //曲线控件.f_设置汽蚀余量(需要进行绘制的曲线ID, 曲线汽蚀余量, 曲线X坐标对集合, 曲线Y坐标对集合); f_绘制临界点(曲线控件, 需要进行绘制的曲线ID, 采集样本_Y轴数据列名); } } }