Exemplo n.º 1
0
        private void btnInit_Click(object sender, EventArgs e)
        {
            btnInitBackground.Enabled = true;
            btnStart.Enabled          = true;

            EnergyLogic     = new EnergyCellLogic();
            AtomLogic       = new AtomLogic();
            ExperimentLogic = new ExperimentLogic();
        }
Exemplo n.º 2
0
        /// <summary>
        /// 生成tick数据
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnStart_Click(object sender, EventArgs e)
        {
            string   filePath = string.Empty;
            Graphics g;

            Rectangle rectBorder;
            Rectangle rectContent;
            Color     contentColor;
            Brush     contentBrush;

            Brush atomBrush = new SolidBrush(Color.Red);
            Brush strBrush  = new SolidBrush(Color.Blue);

            var experimentId = Convert.ToInt64(txtExperimentID.Text);

            InitDirectoryDataManager(experimentId);

            for (int i = 0; i < 495; i++) // one second
            {
                //ExperimentLogic.SaveExperimentTickData(EnergyLogic.GetTickCells(i + 1), AtomLogic.GetTickAtoms(i + 1));

                filePath = string.Format(@"../../Image/cells_{0}.png", i + 1);

                Image img = new Bitmap(MaxX * Length, MaxY * Length);

                g = Graphics.FromImage(img);

                foreach (var cell in EnergyLogic.EnergyCells)
                {
                    var rgb = EnergyCellLogic.GetGRB(cell.Energy);
                    contentColor = Color.FromArgb(rgb.R, rgb.G, rgb.B);
                    contentBrush = new SolidBrush(contentColor);
                    rectContent  = new Rectangle((cell.CellX - 1) * Length, (cell.CellY - 1) * Length, Length, Length);
                    g.FillRectangle(contentBrush, rectContent);
                }

                foreach (var atom in AtomLogic.Atoms)
                {
                    g.FillEllipse(atomBrush, atom.PositionX - 5, atom.PositionY - 5, 10, 10);
                    g.DrawString(atom.Order.ToString(), Font, strBrush, atom.PositionX - 5, atom.PositionY - 5);
                }

                img.Save(filePath, ImageFormat.Png);

                g.Dispose();
                img.Dispose();

                var tickCells = EnergyLogic.GetTickCells(i + 1);
                _TickCellDirectory.Add(i + 1, tickCells);
                var tickAtoms = AtomLogic.GetTickAtoms(i + 1);
                _AtomDirectory.Add(i + 1, tickAtoms);


                EnergyLogic.ArgEnergyCells();
                AtomLogic.CalAtomStatus();
            }

            _TickCellDirectory.ClearCache();
            _AtomDirectory.ClearCache();

            //Tools.BinarySerialize<Dictionary<int, List<AtomTick>>>(AtomLogic.TickAtoms, _DemoTickAtomsFilePath);
            //Tools.BinarySerialize<Dictionary<int, List<EnergyCellTick>>>(EnergyLogic.TickCells, _DemoTickCellsFilePath);

            MessageBox.Show("Tick数据生成成功!");

            AtomLogic.Clear();
            EnergyLogic.Clear();
        }