/// <summary> ///绘制时刻与站名线底图 /// </summary> public void DrawFrame() { pictureBox2.Size = new Size(TD_Width, TD_Height); Graphics gs; gs = Graphics.FromImage(bmp); gs.Clear(this.pictureBox2.BackColor); checkBox1.Checked = false; checkBox2.Checked = false; pictureBox2.BackgroundImage = null; int ix = dm.stationDrawList.Count; List <double> staMile = new List <double>(); for (int i = 0; i < ix; i++) { staMile.Add(dm.stationDrawList[i].totalMile); } pt.Branch(dm.stationDrawStringList, staMile, this.bmp.Width, this.bmp.Height); int k = pt.border2.Count; for (int i = 0; i < k; i++) { int ii = i + 1; double total1 = pt.Mile1[ii].Last(); pt.TimetableFrame(this.bmp.Width, pt.border2[i].up, pt.border2[i].down, total1, pt.Mile1[ii], gs, pt.str1[ii], ii); } this.pictureBox2.BackgroundImage = bmp; }
public List <int> AllDensity = new List <int>();//读取所有密度值,用来在Assessform中判断可视化条形图大小 /// <summary> /// 计算所有站的列车密度 /// </summary> public Dictionary <List <string>, List <int> > GetTrainDensity(DataManager dmm)//列车密度表_返回形式(<站名,站名> -> <上行列车数,下行列车数>) { //调用方法实现PaintTool中str1的读取 完成密度值的计算 DataManager dm = dmm; PaintTool pt = new PaintTool(); PaintForm pf = new PaintForm(); int ix = dm.stationDrawList.Count; List <double> staMile = new List <double>(); for (int i = 0; i < ix; i++) { staMile.Add(dm.stationDrawList[i].totalMile); } pt.Branch(dm.stationDrawStringList, staMile, pf.bmp.Width, pf.bmp.Height); Dictionary <List <string>, List <int> > TrainDensity = new Dictionary <List <string>, List <int> >(); for (int jjj = 1; jjj < pt.str1.Count + 1; jjj++) { List <string> StationName = pt.str1[jjj];//读取各个线路的站名列表 for (int i = 0; i < StationName.Count - 1; i++) { List <string> Section = new List <string>();//读取区间名称 Section.Add(StationName[i]); Section.Add(StationName[i + 1]); List <int> Density = new List <int>(); int DensityUp = 0; int DensityDown = 0; foreach (Train aTrain in dm.UpTrainDic.Values)//上行列车 { for (int j = 0; j < aTrain.staList.Count - 1; j++) { if (StationName[i + 1] == aTrain.staList[j] && StationName[i] == aTrain.staList[j + 1])//判断列车经过车站顺序符合则区间列车密度加1 { DensityUp++; } } } Density.Add(DensityUp); AllDensity.Add(DensityUp); foreach (Train aTrain in dm.DownTrainDic.Values)//下行列车 { for (int j = 0; j < aTrain.staList.Count - 1; j++) { if (StationName[i] == aTrain.staList[j] && StationName[i + 1] == aTrain.staList[j + 1])//判断列车经过车站顺序符合则区间列车密度加1 { DensityDown++; } } } Density.Add(DensityDown); AllDensity.Add(DensityDown); TrainDensity.Add(Section, Density); } } return(TrainDensity); }