Exemple #1
0
        /// <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;
        }
Exemple #2
0
        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);
        }