private void btnInit_Click(object sender, EventArgs e) { btnInitBackground.Enabled = true; btnStart.Enabled = true; EnergyLogic = new EnergyCellLogic(); AtomLogic = new AtomLogic(); ExperimentLogic = new ExperimentLogic(); }
/// <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(); }