using PaintDotNet; using PaintDotNet.Base.CommTool; using PaintDotNet.Base.SettingModel; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Metis.Setting { internal partial class GridSettingForm : PdnBaseForm { /// /// 主控件 /// private AppWorkspace appWorkspace; /// /// 网格设置的model /// private GridModel gridModel = Startup.instance.gridModel; /// /// 单位标尺 /// private double unitLength = 1; /// /// 网格调色板 /// PaintDotNet.ColorsForm colorsFormGrid; /// /// 正方形调色板 /// PaintDotNet.ColorsForm colorsFormRect; /// /// 圆形调色板 /// PaintDotNet.ColorsForm colorsFormCircular; /// /// 网格样式的增改删,0-添加、1-修改、2-删除 /// private int operation = -1; public GridSettingForm(AppWorkspace appWorkspace) { this.appWorkspace = appWorkspace; InitializeComponent(); InitializeLanguageText(); InitParameterData(); InitializeComponent2(); InitializationDataGridView(); UnitData(); } private void InitializeLanguageText() { this.Text = PdnResources.GetString("Menu.Setting.GridSetting.Text"); this.groupBox5.Text = PdnResources.GetString("GridAdded"); this.btnDel.Text = PdnResources.GetString("Menu.Edit.Delete.Text"); this.groupBox1.Text = PdnResources.GetString("Menu.Setting.Text"); this.btnSave.Text = PdnResources.GetString("CommonAction.Save"); this.btnSaveAs.Text = PdnResources.GetString("Menu.Edit.Copy.Text"); this.button1.Text = PdnResources.GetString("Menu.Imagement.Rulersetting.active.text"); this.groupBox2.Text = PdnResources.GetString("Menu.Edit.Text"); this.label6.Text = PdnResources.GetString("Menu.name.text") + ":"; this.label8.Text = PdnResources.GetString("Menu.unit.text") + ":"; this.label9.Text = PdnResources.GetString("Menu.width.text") + ":"; this.label10.Text = PdnResources.GetString("Menu.height.text") + ":"; this.label12.Text = PdnResources.GetString("Menu.row.text") + ":"; this.label11.Text = PdnResources.GetString("Menu.columns.text") + ":"; this.label2.Text = PdnResources.GetString("Menu.diameter.text") + ":"; this.label1.Text = PdnResources.GetString("Menu.Generalanalysis.Processmparison.Sidelength.text") + ":"; this.label4.Text = PdnResources.GetString("Menu.Tools.GridLine.Text") + ":"; this.label5.Text = PdnResources.GetString("Menu.circular.Text") + ":"; this.label3.Text = PdnResources.GetString("Menu.MeasureAction.MeasureSquare.Text") + ":"; } /// /// 给下拉集合赋值 /// private void InitParameterData() { this.comboBox_Grid.Items.AddRange(InvariantData.dashStyles); this.comboBox_Circular.Items.AddRange(InvariantData.dashStyles); this.comboBox_Square.Items.AddRange(InvariantData.dashStyles); } /// /// 网格样式列表初始化 /// private void InitializationDataGridView() { this.dataGridView1.Rows.Clear(); //keyValuePairs.Clear(); int serveNameID = 0; this.dataGridView1.ReadOnly = true; List fileNames = FileOperationHelper.GetFileList(Application.StartupPath + "\\Config\\" + Startup.instance.SettingPrefix + "\\GridConfig\\"); if (fileNames.Count > 0) { for (int i = 0; i < fileNames.Count; i++) { GridModel gselectRidModel = XmlSerializeHelper.DESerializer(FileOperationHelper.ReadStringFromFile(Application.StartupPath + "\\Config\\" + Startup.instance.SettingPrefix + "\\GridConfig\\" + fileNames[i], FileMode.Open)); DataGridViewRow row = new DataGridViewRow(); foreach (DataGridViewColumn c in this.dataGridView1.Columns) { row.Cells.Add(c.CellTemplate.Clone() as DataGridViewCell); } row.Cells[0].Value = gselectRidModel.gridName; if (gselectRidModel.gridName.Equals(Startup.instance.configModel.GridName)) { serveNameID = i; } this.dataGridView1.Rows.Add(row); } if (operation != 2) { this.dataGridView1.CurrentCell = this.dataGridView1[0, serveNameID]; } else { this.dataGridView1.CurrentCell = this.dataGridView1[0, 0]; } RefreshDataGridView(); } } private string serveName = string.Empty; /// /// 刷新网格样式列表 /// private void RefreshDataGridView() { if (this.dataGridView1.SelectedRows.Count > 0 && this.dataGridView1.CurrentCell != null) { serveName = this.dataGridView1.CurrentCell.Value.ToString(); //string selectName = this.dataGridView1.CurrentCell.Value.ToString() + ".xml"; GridModel gselectRidModel = XmlSerializeHelper.DESerializer(FileOperationHelper.ReadStringFromFile(Application.StartupPath + "\\Config\\" + Startup.instance.SettingPrefix + "\\GridConfig\\" + serveName + ".xml", FileMode.Open)); this.textBox1.Text = serveName; //网格 this.numericUpDown1.Value = gselectRidModel.grid.ActualLength > 0 ? gselectRidModel.grid.ActualLength : 1; this.numericUpDown2.Value = gselectRidModel.grid.ActualHeight > 0 ? gselectRidModel.grid.ActualHeight : 1; this.numericUpDown4.Value = gselectRidModel.grid.HorizontalNum > 0 ? gselectRidModel.grid.HorizontalNum : 1; this.numericUpDown3.Value = gselectRidModel.grid.VerticalNum > 0 ? gselectRidModel.grid.VerticalNum : 1; this.comboBox_Grid.SelectedIndex = gselectRidModel.grid.DashStyle; this.numericUpDown7.Value = gselectRidModel.grid.Thickness > 0 ? gselectRidModel.grid.Thickness : 1; this.gridPanel.BackColor = Color.FromArgb(gselectRidModel.grid.Color); //正方形 this.comboBox_Square.SelectedIndex = gselectRidModel.rectangle.DashStyle; this.numericUpDown9.Value = gselectRidModel.rectangle.Thickness > 0 ? gselectRidModel.rectangle.Thickness : 1; this.numericUpDown6.Value = gselectRidModel.rectangle.ActualLength > 0 ? gselectRidModel.rectangle.ActualLength : 1; this.rectPanel.BackColor = Color.FromArgb(gselectRidModel.rectangle.Color); //圆形 this.comboBox_Circular.SelectedIndex = gselectRidModel.round.DashStyle; this.numericUpDown8.Value = gselectRidModel.round.Thickness > 0 ? gselectRidModel.round.Thickness : 1; this.numericUpDown5.Value = gselectRidModel.round.ActualDiameter > 0 ? gselectRidModel.round.ActualDiameter : 1; this.circularPanel.BackColor = Color.FromArgb(gselectRidModel.round.Color); if (gselectRidModel.grid.Unit == 6) comboBox7.Text = "px"; else if (gselectRidModel.grid.Unit == 4) comboBox7.Text = "μm"; } } /// /// 初始化组件 /// private void InitializeComponent2() { this.textBox1.Text = gridModel.gridName; this.numericUpDown1.Value = gridModel.grid.ActualLength > 0 ? gridModel.grid.ActualLength : 1; this.numericUpDown2.Value = gridModel.grid.ActualHeight > 0 ? gridModel.grid.ActualHeight : 1; this.numericUpDown4.Value = gridModel.grid.HorizontalNum > 0 ? gridModel.grid.HorizontalNum : 1; this.numericUpDown3.Value = gridModel.grid.VerticalNum > 0 ? gridModel.grid.VerticalNum : 1; this.comboBox_Grid.SelectedIndex = gridModel.grid.DashStyle; this.numericUpDown7.Value = gridModel.grid.Thickness > 0 ? gridModel.grid.Thickness : 1; this.gridPanel.BackColor = Color.FromArgb(gridModel.grid.Color); this.numericUpDown6.Value = gridModel.rectangle.sideLength > 0 ? gridModel.rectangle.sideLength : 80; this.comboBox_Square.SelectedIndex = gridModel.rectangle.DashStyle; this.numericUpDown9.Value = gridModel.rectangle.Thickness > 0 ? gridModel.rectangle.Thickness : 1; this.rectPanel.BackColor = Color.FromArgb(gridModel.rectangle.Color); this.numericUpDown5.Value = gridModel.round.diameter > 0 ? gridModel.round.diameter : 70; this.comboBox_Circular.SelectedIndex = gridModel.round.DashStyle; this.numericUpDown8.Value = gridModel.round.Thickness > 0 ? gridModel.round.Thickness : 1; this.circularPanel.BackColor = Color.FromArgb(gridModel.round.Color); this.colorsFormGrid = new ColorsForm(); this.colorsFormGrid.StartPosition = FormStartPosition.CenterScreen; this.colorsFormGrid.UserPrimaryColorChanged += new ColorEventHandler(this.colorsFormUserPrimaryColorChanged); this.colorsFormRect = new ColorsForm(); this.colorsFormRect.StartPosition = FormStartPosition.CenterScreen; this.colorsFormRect.UserPrimaryColorChanged += new ColorEventHandler(this.colorsFormUserPrimaryColorChanged); this.colorsFormCircular = new ColorsForm(); this.colorsFormCircular.StartPosition = FormStartPosition.CenterScreen; this.colorsFormCircular.UserPrimaryColorChanged += new ColorEventHandler(this.colorsFormUserPrimaryColorChanged); //this.groupBox2.Enabled = false; //this.groupBox3.Enabled = false; //this.groupBox4.Enabled = false; } /// /// 单位设置初始化 /// private void UnitData() { this.appWorkspace.getMeasureInfo().TryGetValue(MeasurementUnit.Micron, out unitLength);//获取系统标尺-微米 if (gridModel.grid.Unit == 6) comboBox7.Text = "px"; else if (gridModel.grid.Unit == 4) comboBox7.Text = "μm"; } /// /// 调色板回调函数 /// /// /// private void colorsFormUserPrimaryColorChanged(object sender, ColorEventArgs ce) { } #region 宽度 private void trackBar1_Scroll(object sender, EventArgs e) { this.numericUpDown1.Value = this.trackBar1.Value; } private void numericUpDown1_ValueChanged(object sender, EventArgs e) { this.trackBar1.Value = Convert.ToInt32(this.numericUpDown1.Value); } #endregion #region 高度 private void trackBar2_Scroll(object sender, EventArgs e) { this.numericUpDown2.Value = this.trackBar2.Value; } private void numericUpDown2_ValueChanged(object sender, EventArgs e) { this.trackBar2.Value = Convert.ToInt32(this.numericUpDown2.Value); } #endregion #region 列数 private void trackBar3_Scroll(object sender, EventArgs e) { this.numericUpDown3.Value = this.trackBar3.Value; } private void numericUpDown3_ValueChanged(object sender, EventArgs e) { this.trackBar3.Value = Convert.ToInt32(this.numericUpDown3.Value); } #endregion #region 行数 private void trackBar4_Scroll(object sender, EventArgs e) { this.numericUpDown4.Value = this.trackBar4.Value; } private void numericUpDown4_ValueChanged(object sender, EventArgs e) { this.trackBar4.Value = Convert.ToInt32(this.numericUpDown4.Value); } #endregion #region 直径 private void trackBar5_Scroll(object sender, EventArgs e) { this.numericUpDown5.Value = this.trackBar5.Value; } private void numericUpDown5_ValueChanged(object sender, EventArgs e) { this.trackBar5.Value = Convert.ToInt32(this.numericUpDown5.Value); } #endregion #region 边长 private void trackBar6_Scroll(object sender, EventArgs e) { this.numericUpDown6.Value = this.trackBar6.Value; } private void numericUpDown6_ValueChanged(object sender, EventArgs e) { this.trackBar6.Value = Convert.ToInt32(this.numericUpDown6.Value); } #endregion private void gridPanel_Click(object sender, EventArgs e) { this.colorsFormGrid.UserPrimaryColor = ColorBgra.FromColor(this.gridPanel.BackColor); this.colorsFormGrid.setSaveBtn_Click(new System.EventHandler(this.gridColorChanged)); this.colorsFormGrid.ShowDialog(); } private void circularPanel_Click(object sender, EventArgs e) { this.colorsFormCircular.UserPrimaryColor = ColorBgra.FromColor(this.circularPanel.BackColor); this.colorsFormCircular.setSaveBtn_Click(new System.EventHandler(this.circularColorChanged)); this.colorsFormCircular.ShowDialog(); } private void rectPanel_Click(object sender, EventArgs e) { this.colorsFormRect.UserPrimaryColor = ColorBgra.FromColor(this.rectPanel.BackColor); this.colorsFormRect.setSaveBtn_Click(new System.EventHandler(this.rectColorChanged)); this.colorsFormRect.ShowDialog(); } /// /// 网格Panel的调色板颜色改变 /// /// /// private void gridColorChanged(object sender, EventArgs e) { this.gridPanel.BackColor = this.colorsFormGrid.UserPrimaryColor.ToColor(); // this.measureStyleModel.backColor = this.colorsForm.UserPrimaryColor.ToColor().ToArgb(); this.colorsFormGrid.Close(); } /// /// 矩形Panel的调色板颜色改变 /// /// /// private void rectColorChanged(object sender, EventArgs e) { this.rectPanel.BackColor = this.colorsFormRect.UserPrimaryColor.ToColor(); // this.measureStyleModel.backColor = this.colorsForm.UserPrimaryColor.ToColor().ToArgb(); this.colorsFormRect.Close(); } /// /// 圆形Panel的调色板颜色改变 /// /// /// private void circularColorChanged(object sender, EventArgs e) { this.circularPanel.BackColor = this.colorsFormCircular.UserPrimaryColor.ToColor(); // this.measureStyleModel.backColor = this.colorsForm.UserPrimaryColor.ToColor().ToArgb(); this.colorsFormCircular.Close(); } private void dataGridView1_SelectionChanged(object sender, EventArgs e) { RefreshDataGridView(); } private void btnSaveAs_Click(object sender, EventArgs e) { operation = 0; } private void btnSave_Click(object sender, EventArgs e) { string userInfoXml = XmlSerializeHelper.XmlSerialize(CurrentGridModel()); if (operation == -1) { string updateName = Application.StartupPath + "\\Config\\" + Startup.instance.SettingPrefix + "\\GridConfig\\" + this.dataGridView1.CurrentCell.Value + ".xml"; System.IO.File.Delete(updateName); //FileOperationHelper.DeleteFolder(updateName); //保存到xml string gridFilePath = Application.StartupPath + "\\Config\\" + Startup.instance.SettingPrefix + "\\GridConfig\\" + this.textBox1.Text + ".xml"; if (System.IO.File.Exists(gridFilePath)) { MessageBox.Show(PdnResources.GetString("Menu.Thefilenandmodify.text")); return; } if (!FileOperationHelper.WriteStringToFile(userInfoXml, gridFilePath, FileMode.Create)) { MessageBox.Show(PdnResources.GetString("Menu.idinformationsavin.Text")); } this.dataGridView1.SelectedCells[0].Value = this.textBox1.Text; } else if (operation == 0) { //保存到xml string gridFilePath = Application.StartupPath + "\\Config\\" + Startup.instance.SettingPrefix + "\\GridConfig\\" + this.textBox1.Text + ".xml"; if (System.IO.File.Exists(gridFilePath)) { MessageBox.Show(PdnResources.GetString("Menu.Thefilenandmodify.text")); return; } else { if (!FileOperationHelper.WriteStringToFile(userInfoXml, gridFilePath, FileMode.Create)) { MessageBox.Show(PdnResources.GetString("Menu.idinformationsavin.Text")); } InitializationDataGridView(); } operation = -1; //this.button1.Text = PdnResources.GetString("Menu.application.text"); } //InitializationDataGridView(); } /// /// 获取model /// /// private GridModel CurrentGridModel() { //临时model,根据应用场景运用 GridModel temporarygridModel = new GridModel(); temporarygridModel.grid = new GridModel.Grid(); temporarygridModel.rectangle = new GridModel.Rectangle(); temporarygridModel.round = new GridModel.Round(); temporarygridModel.gridName = this.textBox1.Text; if ("px".Equals(comboBox7.Text)) { temporarygridModel.grid.SideLength = (int)this.numericUpDown1.Value; temporarygridModel.grid.SideHeight = (int)this.numericUpDown2.Value; temporarygridModel.rectangle.sideLength = (int)this.numericUpDown6.Value; temporarygridModel.round.diameter = (int)this.numericUpDown5.Value; } else if ("μm".Equals(comboBox7.Text)) { temporarygridModel.grid.SideLength = int.Parse(((double)this.numericUpDown1.Value / unitLength).ToString("F0")); temporarygridModel.grid.SideHeight = int.Parse(((double)this.numericUpDown2.Value / unitLength).ToString("F0")); temporarygridModel.rectangle.sideLength = int.Parse(((double)this.numericUpDown6.Value / unitLength).ToString("F0")); temporarygridModel.round.diameter = int.Parse(((double)this.numericUpDown5.Value / unitLength).ToString("F0")); } temporarygridModel.grid.HorizontalNum = (int)this.numericUpDown4.Value; temporarygridModel.grid.VerticalNum = (int)this.numericUpDown3.Value; temporarygridModel.grid.DashStyle = this.comboBox_Grid.SelectedIndex; temporarygridModel.grid.Thickness = (int)this.numericUpDown7.Value; temporarygridModel.grid.Color = this.gridPanel.BackColor.ToArgb(); if ("px".Equals(comboBox7.Text)) { temporarygridModel.grid.Unit = (int)MeasurementUnit.Pixel; } else if ("μm".Equals(comboBox7.Text)) { temporarygridModel.grid.Unit = (int)MeasurementUnit.Micron; } temporarygridModel.rectangle.DashStyle = this.comboBox_Square.SelectedIndex; temporarygridModel.rectangle.Thickness = (int)this.numericUpDown9.Value; temporarygridModel.rectangle.Color = this.rectPanel.BackColor.ToArgb(); temporarygridModel.round.DashStyle = this.comboBox_Circular.SelectedIndex; temporarygridModel.round.Thickness = (int)this.numericUpDown8.Value; temporarygridModel.round.Color = this.circularPanel.BackColor.ToArgb(); temporarygridModel.grid.ActualLength = (int)this.numericUpDown1.Value; temporarygridModel.grid.ActualHeight = (int)this.numericUpDown2.Value; temporarygridModel.rectangle.ActualLength = (int)this.numericUpDown6.Value; temporarygridModel.round.ActualDiameter = (int)this.numericUpDown5.Value; return temporarygridModel; } /// /// 删除 /// /// /// private void btnDel_Click(object sender, EventArgs e) { if (this.dataGridView1.Rows.Count > 1) { DialogResult dr = MessageBox.Show(PdnResources.GetString("Menu.Areyousuretcteddata.text") + "?", PdnResources.GetString("Menu.ensure.text"), MessageBoxButtons.OKCancel, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1); if (dr == DialogResult.OK) { operation = 2; string updateName = Application.StartupPath + "\\Config\\" + Startup.instance.SettingPrefix + "\\GridConfig\\" + this.dataGridView1.CurrentCell.Value.ToString() + ".xml"; System.IO.File.Delete(updateName); InitializationDataGridView(); operation = -1; } } else { MessageBox.Show("只有一条数据,不可删除!"); return; } } /// /// 激活 /// /// /// private void button1_Click(object sender, EventArgs e) { Startup.instance.gridModel = CurrentGridModel(); string userInfoXml = XmlSerializeHelper.XmlSerialize(CurrentGridModel()); Startup.instance.configModel.GridName = this.textBox1.Text; string configXml = XmlSerializeHelper.XmlSerialize(Startup.instance.configModel); string configPath = Application.StartupPath + "\\Config\\" + Startup.instance.SettingPrefix + "\\Config.xml"; FileOperationHelper.WriteStringToFile(configXml, configPath, FileMode.Create); string filePath = Application.StartupPath + "\\Config\\" + Startup.instance.SettingPrefix + "\\Grid.xml"; if (!FileOperationHelper.WriteStringToFile(userInfoXml, filePath, FileMode.Create)) MessageBox.Show(PdnResources.GetString("Menu.idinformationsavin.Text")); if (appWorkspace.ActiveDocumentWorkspace != null) appWorkspace.ActiveDocumentWorkspace.Refresh(); if (operation != -1) operation = -1; } } }