using OpenCvSharp; using OpenCvSharp.Extensions; using PaintDotNet.Base.Functionodel; using PaintDotNet.CustomControl; 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; using PaintDotNet.DbOpreate.DbBll; using PaintDotNet.DbOpreate.DbModel; using PaintDotNet.Base.CommTool; using PaintDotNet.Instrument; using Metis.ParameterSet; using PaintDotNet.Data.Param; using PaintDotNet.Base; namespace PaintDotNet.GeneralAnalysis { /// /// 多相统计分析 /// internal class PolyphaseCounterAnalysisDialog : PdnBaseForm { #region 控件 private System.Windows.Forms.GroupBox groupBox4; private System.Windows.Forms.ListView listView1; private System.Windows.Forms.GroupBox groupBox1; private System.Windows.Forms.Button button2; private System.Windows.Forms.CheckBox checkBox1; private System.Windows.Forms.Button button1; private System.Windows.Forms.GroupBox groupBox2; private System.Windows.Forms.GroupBox groupBox_review; private System.Windows.Forms.GroupBox groupBox5; private System.Windows.Forms.GroupBox groupBox6; private System.Windows.Forms.GroupBox groupBox7; private System.Windows.Forms.Label label1; private System.Windows.Forms.Button button4; private System.Windows.Forms.Button button3; private System.Windows.Forms.DataGridView dataGridView1; private System.Windows.Forms.ImageList imageList1; private GroupBox groupBox3; private Label label5; private Label label4; private Label label3; private Label label2; private DataGridView dataGridView_results; private Label lbl_areaRate; private Label lbl_countPer; private Label lbl_areaContent; private Label lbl_count; private Button button_remove; private Button button_all; private IContainer components; private List finalResults = new List(); private List counterResults = new List(); private Button btn_close; #endregion /// /// 主空间 /// private AppWorkspace appWorkspace; /// /// 图像面板 /// private DocumentWorkspaceWindow documentWorkspace; /// /// 选中图片的mat /// private Mat imageMat; /// /// 当前选择的图片index /// int selectIndex = 0; private NumericUpDown numericUpDown1; private int decnum = 2; private CommonControlButtons commonControlButtons; private DataGridViewTextBoxColumn Column1; private DataGridViewTextBoxColumn Column2; private DataGridViewTextBoxColumn Column3; private DataGridViewTextBoxColumn Column4; private DataGridViewTextBoxColumn Column6; private List bitList = new List(); private Button button9; private CheckedListBox listBox_analysisResult; private Dictionary> bitDic = new Dictionary>(); private DataGridViewTextBoxColumn Column5; private DataGridViewTextBoxColumn dataGridViewTextBoxColumn1; private DataGridViewTextBoxColumn dataGridViewTextBoxColumn2; private DataGridViewTextBoxColumn dataGridViewTextBoxColumn3; private DataGridViewTextBoxColumn dataGridViewTextBoxColumn4; private DataGridViewTextBoxColumn Column7; private int is_all = 0; private int imgIndex = -1; private GeneralAnalysisModel generalAnalysisModel = new GeneralAnalysisModel(); private bool isExportResults = false; private bool isExportReports = false; private bool isExportProjects = false; private int menuId; private string menuName; /// /// 是否脚本运行 /// private Boolean initScriptValues = false; public PolyphaseCounterAnalysisDialog() { InitializeComponent(); } public PolyphaseCounterAnalysisDialog(AppWorkspace appWorkspace,PdnMenuItem menuItem) { InitializeComponent(); InitializeLanguageText(); this.appWorkspace = appWorkspace; this.menuId = menuItem.MenuId; this.menuName = menuItem.Text; this.documentWorkspace = new DocumentWorkspaceWindow(appWorkspace); this.documentWorkspace.Dock = DockStyle.Fill; this.documentWorkspace.HookMouseEvents(); this.documentWorkspace.AuxiliaryLineEnabled = false; this.documentWorkspace.Visible = false; this.groupBox_review.Controls.Add(documentWorkspace); this.commonControlButtons = new CommonControlButtons(); this.commonControlButtons.Dock = DockStyle.Top; this.commonControlButtons.Height = 30; this.commonControlButtons.HideZoomToWindowAndActualSize(); this.groupBox_review.Controls.Add(commonControlButtons); InitCommonButtonEvent(); InitPicList(); //CalcProcess(); //this.listView1.SelectedIndexChanged += new EventHandler(this.ListViewSelectedIndexChanged); SetAnalyzeModelFromXml("Template.Manager.item2.PolyphaseCounterAnalysis"); SetStyle(ControlStyles.UserPaint, true); SetStyle(ControlStyles.AllPaintingInWmPaint, true); // 禁止擦除背景. SetStyle(ControlStyles.DoubleBuffer, true); // 双缓冲 this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.saveLastData); this.Shown += showImg; } /// /// 执行脚本自动化的步骤 /// private void startScriptAutomaticAction() { saveAll(); if (isExportResults)//导出结果 this.button4.PerformClick(); if (isExportReports)//生成报告 this.button3.PerformClick(); if (isExportProjects)//导出项目 this.button9.PerformClick(); this.appWorkspace.ScriptAutomatic = false; this.Close(); } /// /// 获取上次操作参数 /// private void getLastData() { string filePath = Application.StartupPath + "\\Config\\Default\\ParameterSaving\\ParameterGeneralAnalysis.xml"; if (!System.IO.File.Exists(filePath)) { generalAnalysisModel = new GeneralAnalysisModel(); generalAnalysisModel.PolyphaseMutiAreaContentModels = new GeneralAnalysisModel.PolyphaseMutiAreaContentModel(); generalAnalysisModel.PolyphaseCounterAnalysisModels = new GeneralAnalysisModel.PolyphaseCounterAnalysisModel(); generalAnalysisModel.TwoPhaseScaleModels = new GeneralAnalysisModel.TwoPhaseScaleModel(); generalAnalysisModel.PolyphaseContentModels = new GeneralAnalysisModel.PolyphaseContentModel(); generalAnalysisModel.PolyphaseDistanceModels = new GeneralAnalysisModel.PolyphaseDistanceModel(); generalAnalysisModel.DebrisSelectionModels = new GeneralAnalysisModel.DebrisSelectionModel(); generalAnalysisModel.CountNumberAnalysisModels = new GeneralAnalysisModel.CountNumberAnalysisModel(); generalAnalysisModel.PolyphaseMutiAreaContentModels.hasUsed = false; generalAnalysisModel.PolyphaseCounterAnalysisModels.hasUsed = false; generalAnalysisModel.TwoPhaseScaleModels.hasUsed = false; generalAnalysisModel.PolyphaseContentModels.hasUsed = false; generalAnalysisModel.PolyphaseDistanceModels.hasUsed = false; generalAnalysisModel.DebrisSelectionModels.hasUsed = false; generalAnalysisModel.CountNumberAnalysisModels.hasUsed = false; string porosityInfoXml = XmlSerializeHelper.XmlSerialize(generalAnalysisModel); Directory.CreateDirectory(Application.StartupPath + "\\Config\\Default\\ParameterSaving\\"); FileOperationHelper.WriteStringToFile(porosityInfoXml, filePath, FileMode.CreateNew); } else { generalAnalysisModel = XmlSerializeHelper.DESerializer(FileOperationHelper.ReadStringFromFile(filePath, FileMode.Open)); if (generalAnalysisModel.PolyphaseCounterAnalysisModels == null) { generalAnalysisModel.PolyphaseCounterAnalysisModels = new GeneralAnalysisModel.PolyphaseCounterAnalysisModel(); } if (generalAnalysisModel.PolyphaseCounterAnalysisModels.hasUsed) { numericUpDown1.Value = generalAnalysisModel.PolyphaseCounterAnalysisModels.parameter1; checkBox1.Checked = generalAnalysisModel.PolyphaseCounterAnalysisModels.parameter2; } } } /// /// 保存上次操作参数 /// private void saveLastData(object sender, EventArgs e) { #region [开启脚本录制] if (appWorkspace.startScriptRecording) { getScriptRecording(); } #endregion if (generalAnalysisModel.PolyphaseCounterAnalysisModels == null) { generalAnalysisModel.PolyphaseCounterAnalysisModels = new GeneralAnalysisModel.PolyphaseCounterAnalysisModel(); } generalAnalysisModel.PolyphaseCounterAnalysisModels.hasUsed = true; generalAnalysisModel.PolyphaseCounterAnalysisModels.parameter1 = (int)numericUpDown1.Value; generalAnalysisModel.PolyphaseCounterAnalysisModels.parameter2 = checkBox1.Checked; string filePath = Application.StartupPath + "\\Config\\Default\\ParameterSaving\\ParameterGeneralAnalysis.xml"; string porosityInfoXml = XmlSerializeHelper.XmlSerialize(generalAnalysisModel); FileOperationHelper.WriteStringToFile(porosityInfoXml, filePath, FileMode.Create); } #region 公共按钮 private void InitCommonButtonEvent() { this.commonControlButtons.zoomInButton.Click += new EventHandler(zoomInButton_Click); this.commonControlButtons.zoomOutButton.Click += new EventHandler(zoomOutButton_Click); this.commonControlButtons.zoomToWindowButton.Click += new EventHandler(zoomToWindowButton_Click); this.commonControlButtons.actualSizeButton.Click += new EventHandler(actualSizeButton_Click); this.commonControlButtons.pointerButton.Click += new EventHandler(pointerButton_Click); this.commonControlButtons.mobileModeButton.Click += new EventHandler(mobileModeButton_Click); } private void zoomInButton_Click(object sender, EventArgs e) { if (this.imageMat != null) this.documentWorkspace.ZoomIn(); } private void zoomOutButton_Click(object sender, EventArgs e) { if (this.imageMat != null) this.documentWorkspace.ZoomOut(); } private void zoomToWindowButton_Click(object sender, EventArgs e) { this.documentWorkspace.ZoomBasis = ZoomBasis.FitToWindow; } private void actualSizeButton_Click(object sender, EventArgs e) { this.documentWorkspace.ZoomBasis = ZoomBasis.ScaleFactor; this.documentWorkspace.ScaleFactor = ScaleFactor.OneToOne; } private void pointerButton_Click(object sender, EventArgs e) { this.documentWorkspace.ActiveTool = Annotation.Enum.DrawToolType.Pointer; } private void mobileModeButton_Click(object sender, EventArgs e) { this.documentWorkspace.ActiveTool = Annotation.Enum.DrawToolType.MoveMode; } #endregion /// /// 初始化图片列表数据 /// //public void InitPicList() //{ // //初始化图片列表 // for (int i = 0; i < this.appWorkspace.DocumentWorkspaces.Length; i++) // { // this.imageList1.Images.Add("img" + i, this.appWorkspace.DocumentWorkspaces[i].BinarizationThumbnail); // this.listView1.Items.Add("", i); // this.listView1.Items[i].ImageIndex = i; // this.listView1.Items[i].Text = this.appWorkspace.DocumentWorkspaces[i].GetFriendlyName(); // this.listView1.Items[i].Name = this.appWorkspace.DocumentWorkspaces[i].GetFriendlyName(); // } //} public void InitPicList() { //初始化图片列表 for (int i = 0; i < this.appWorkspace.DocumentWorkspaces.Length; i++) { this.imageList1.Images.Add("img" + i, this.appWorkspace.DocumentWorkspaces[i].CompositionSurface.Thumbnail); this.listView1.Items.Add("", i); this.listView1.Items[i].ImageIndex = i; String imageName = this.appWorkspace.DocumentWorkspaces[i].GetFriendlyName(); if (listView1.Items.Find(imageName, false).Count() > 0) { if (imageName.Split('.').Count() > 1) { imageName = imageName.Split('.')[0] + "(" + listView1.Items.Find(imageName, false).Count() + ")." + imageName.Split('.')[1]; } } this.listView1.Items[i].Text = imageName; this.listView1.Items[i].Name = imageName; if (this.appWorkspace.DocumentWorkspaces[i].Equals(this.appWorkspace.ActiveDocumentWorkspace)) { this.imgIndex = i; } } } private void PolyphaseCounterAnalysisDialog_Load(object sender, EventArgs e) { } private void InitializeLanguageText() { this.btn_close.Text = PdnResources.GetString("Menu.File.Close.Text"); this.groupBox4.Text = PdnResources.GetString("Menu.Tools.ImageIndex.Text"); this.groupBox1.Text = PdnResources.GetString("Menu.operation.text"); this.button2.Text = PdnResources.GetString("Menu.Saveresult.text"); this.checkBox1.Text = PdnResources.GetString("Menu.Opensettingsatingreport.text"); this.button1.Text = PdnResources.GetString("Menu.Setting.Text"); this.groupBox2.Text = PdnResources.GetString("Menu.Resultspreview.text"); this.Column1.HeaderText = PdnResources.GetString("Menu.Phasename.text"); this.Column2.HeaderText = PdnResources.GetString("Menu.Number.text"); this.Column3.HeaderText = PdnResources.GetString("Menu.Percentage.text"); this.Column4.HeaderText = PdnResources.GetString("Menu.Areapercent.text"); this.Column6.HeaderText = PdnResources.GetString("Menu.Areacontent.text"); this.groupBox_review.Text = PdnResources.GetString("Menu.Preview.text"); this.groupBox5.Text = PdnResources.GetString("Menu.Analysisresult.text"); this.button_remove.Text = PdnResources.GetString("Menu.Edit.Delete.Text"); this.button_all.Text = PdnResources.GetString("Menu.Showall.text"); this.Column5.HeaderText = PdnResources.GetString("Menu.picture.Text"); this.dataGridViewTextBoxColumn1.HeaderText = PdnResources.GetString("Menu.Phasename.text"); this.dataGridViewTextBoxColumn2.HeaderText = PdnResources.GetString("Menu.Number.text"); this.dataGridViewTextBoxColumn3.HeaderText = PdnResources.GetString("Menu.Percentage.text"); this.dataGridViewTextBoxColumn4.HeaderText = PdnResources.GetString("Menu.Areapercent.text"); this.Column7.HeaderText = PdnResources.GetString("Menu.Areacontent.text"); this.button9.Text = PdnResources.GetString("Menu.Tools.OpenProject.Text"); this.label1.Text = PdnResources.GetString("Menu.Decimal.text"); this.label4.Text = PdnResources.GetString("Menu.Percentage.text") + ":"; this.button4.Text = PdnResources.GetString("Menu.Exportresults.text"); this.button3.Text = PdnResources.GetString("Menu.Tools.CreateReport.Text"); this.groupBox3.Text = PdnResources.GetString("Menu.Averageresult.text"); this.label5.Text = PdnResources.GetString("Menu.Areapercent.text") + ":"; this.label3.Text = PdnResources.GetString("Menu.Areacontent.text") + ":"; this.label2.Text = PdnResources.GetString("Menu.Number.text") + ":"; this.Text = PdnResources.GetString("Menu.Generalanalysis.Multiphasestatistics.Multiphnalysis.text"); } private void InitializeComponent() { this.components = new System.ComponentModel.Container(); this.groupBox4 = new System.Windows.Forms.GroupBox(); this.listView1 = new System.Windows.Forms.ListView(); this.imageList1 = new System.Windows.Forms.ImageList(this.components); this.groupBox1 = new System.Windows.Forms.GroupBox(); this.btn_close = new System.Windows.Forms.Button(); this.button2 = new System.Windows.Forms.Button(); this.checkBox1 = new System.Windows.Forms.CheckBox(); this.button1 = new System.Windows.Forms.Button(); this.groupBox2 = new System.Windows.Forms.GroupBox(); this.dataGridView1 = new System.Windows.Forms.DataGridView(); this.Column1 = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.Column2 = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.Column3 = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.Column4 = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.Column6 = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.groupBox_review = new System.Windows.Forms.GroupBox(); this.groupBox5 = new System.Windows.Forms.GroupBox(); this.listBox_analysisResult = new System.Windows.Forms.CheckedListBox(); this.button_remove = new System.Windows.Forms.Button(); this.button_all = new System.Windows.Forms.Button(); this.groupBox6 = new System.Windows.Forms.GroupBox(); this.dataGridView_results = new System.Windows.Forms.DataGridView(); this.Column5 = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.dataGridViewTextBoxColumn1 = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.dataGridViewTextBoxColumn2 = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.dataGridViewTextBoxColumn3 = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.dataGridViewTextBoxColumn4 = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.Column7 = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.groupBox7 = new System.Windows.Forms.GroupBox(); this.button9 = new System.Windows.Forms.Button(); this.numericUpDown1 = new System.Windows.Forms.NumericUpDown(); this.label1 = new System.Windows.Forms.Label(); this.button4 = new System.Windows.Forms.Button(); this.button3 = new System.Windows.Forms.Button(); this.groupBox3 = new System.Windows.Forms.GroupBox(); this.lbl_areaRate = new System.Windows.Forms.Label(); this.lbl_countPer = new System.Windows.Forms.Label(); this.lbl_areaContent = new System.Windows.Forms.Label(); this.lbl_count = new System.Windows.Forms.Label(); this.label5 = new System.Windows.Forms.Label(); this.label4 = new System.Windows.Forms.Label(); this.label3 = new System.Windows.Forms.Label(); this.label2 = new System.Windows.Forms.Label(); this.groupBox4.SuspendLayout(); this.groupBox1.SuspendLayout(); this.groupBox2.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit(); this.groupBox5.SuspendLayout(); this.groupBox6.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.dataGridView_results)).BeginInit(); this.groupBox7.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).BeginInit(); this.groupBox3.SuspendLayout(); this.SuspendLayout(); // // groupBox4 // this.groupBox4.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left))); this.groupBox4.Controls.Add(this.listView1); this.groupBox4.Location = new System.Drawing.Point(13, 72); this.groupBox4.Margin = new System.Windows.Forms.Padding(4); this.groupBox4.Name = "groupBox4"; this.groupBox4.Padding = new System.Windows.Forms.Padding(4); this.groupBox4.Size = new System.Drawing.Size(158, 483); this.groupBox4.TabIndex = 9; this.groupBox4.TabStop = false; this.groupBox4.Text = "图像索引"; // // listView1 // this.listView1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.listView1.HideSelection = false; this.listView1.LargeImageList = this.imageList1; this.listView1.Location = new System.Drawing.Point(8, 26); this.listView1.Margin = new System.Windows.Forms.Padding(4); this.listView1.MultiSelect = false; this.listView1.Name = "listView1"; this.listView1.Size = new System.Drawing.Size(140, 449); this.listView1.TabIndex = 0; this.listView1.UseCompatibleStateImageBehavior = false; this.listView1.SelectedIndexChanged += new System.EventHandler(this.listView1_SelectedIndexChanged); // // imageList1 // this.imageList1.ColorDepth = System.Windows.Forms.ColorDepth.Depth8Bit; this.imageList1.ImageSize = new System.Drawing.Size(64, 64); this.imageList1.TransparentColor = System.Drawing.Color.Transparent; // // groupBox1 // this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.groupBox1.Controls.Add(this.btn_close); this.groupBox1.Controls.Add(this.button2); this.groupBox1.Controls.Add(this.checkBox1); this.groupBox1.Controls.Add(this.button1); this.groupBox1.Location = new System.Drawing.Point(20, 12); this.groupBox1.Name = "groupBox1"; this.groupBox1.Size = new System.Drawing.Size(1145, 53); this.groupBox1.TabIndex = 10; this.groupBox1.TabStop = false; // // btn_close // this.btn_close.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.btn_close.Location = new System.Drawing.Point(953, 21); this.btn_close.Name = "btn_close"; this.btn_close.Size = new System.Drawing.Size(75, 23); this.btn_close.TabIndex = 3; this.btn_close.Text = "关闭"; this.btn_close.UseVisualStyleBackColor = true; this.btn_close.Click += new System.EventHandler(this.btn_close_Click); // // button2 // this.button2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.button2.Location = new System.Drawing.Point(1053, 21); this.button2.Name = "button2"; this.button2.Size = new System.Drawing.Size(75, 23); this.button2.TabIndex = 2; this.button2.Text = "保存结果"; this.button2.UseVisualStyleBackColor = true; this.button2.Click += new System.EventHandler(this.button2_Click); // // checkBox1 // this.checkBox1.AutoSize = true; this.checkBox1.Location = new System.Drawing.Point(98, 24); this.checkBox1.Name = "checkBox1"; this.checkBox1.Size = new System.Drawing.Size(132, 16); this.checkBox1.TabIndex = 1; this.checkBox1.Text = "生成报告时打开设置"; this.checkBox1.UseVisualStyleBackColor = true; // // button1 // this.button1.Location = new System.Drawing.Point(6, 24); this.button1.Name = "button1"; this.button1.Size = new System.Drawing.Size(75, 23); this.button1.TabIndex = 0; this.button1.Text = "设置"; this.button1.UseVisualStyleBackColor = true; this.button1.Click += new System.EventHandler(this.button1_Click); // // groupBox2 // this.groupBox2.Controls.Add(this.dataGridView1); this.groupBox2.Location = new System.Drawing.Point(178, 72); this.groupBox2.Name = "groupBox2"; this.groupBox2.Size = new System.Drawing.Size(406, 347); this.groupBox2.TabIndex = 11; this.groupBox2.TabStop = false; this.groupBox2.Text = "结果预览"; // // dataGridView1 // this.dataGridView1.AllowUserToAddRows = false; this.dataGridView1.BorderStyle = System.Windows.Forms.BorderStyle.None; this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { this.Column1, this.Column2, this.Column3, this.Column4, this.Column6}); this.dataGridView1.Location = new System.Drawing.Point(6, 26); this.dataGridView1.Name = "dataGridView1"; this.dataGridView1.RowHeadersVisible = false; this.dataGridView1.RowHeadersWidth = 51; this.dataGridView1.RowTemplate.Height = 27; this.dataGridView1.Size = new System.Drawing.Size(394, 444); this.dataGridView1.TabIndex = 0; this.dataGridView1.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView1_CellContentClick); // // Column1 // this.Column1.MinimumWidth = 6; this.Column1.Name = "Column1"; this.Column1.Width = 70; // // Column2 // this.Column2.MinimumWidth = 6; this.Column2.Name = "Column2"; this.Column2.Width = 55; // // Column3 // this.Column3.MinimumWidth = 6; this.Column3.Name = "Column3"; this.Column3.Width = 90; // // Column4 // this.Column4.MinimumWidth = 6; this.Column4.Name = "Column4"; this.Column4.Width = 90; // // Column6 // this.Column6.MinimumWidth = 6; this.Column6.Name = "Column6"; this.Column6.Width = 125; // // groupBox_review // this.groupBox_review.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.groupBox_review.Location = new System.Drawing.Point(590, 72); this.groupBox_review.Name = "groupBox_review"; this.groupBox_review.Size = new System.Drawing.Size(575, 483); this.groupBox_review.TabIndex = 12; this.groupBox_review.TabStop = false; this.groupBox_review.Text = "预览"; // // groupBox5 // this.groupBox5.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.groupBox5.Controls.Add(this.listBox_analysisResult); this.groupBox5.Controls.Add(this.button_remove); this.groupBox5.Controls.Add(this.button_all); this.groupBox5.Location = new System.Drawing.Point(12, 562); this.groupBox5.Name = "groupBox5"; this.groupBox5.Size = new System.Drawing.Size(224, 165); this.groupBox5.TabIndex = 13; this.groupBox5.TabStop = false; this.groupBox5.Text = "分析结果"; // // listBox_analysisResult // this.listBox_analysisResult.CheckOnClick = true; this.listBox_analysisResult.FormattingEnabled = true; this.listBox_analysisResult.HorizontalScrollbar = true; this.listBox_analysisResult.Location = new System.Drawing.Point(11, 57); this.listBox_analysisResult.Name = "listBox_analysisResult"; this.listBox_analysisResult.Size = new System.Drawing.Size(202, 100); this.listBox_analysisResult.TabIndex = 11; this.listBox_analysisResult.SelectedIndexChanged += new System.EventHandler(this.listBox_analysisResult_SelectedIndexChanged); // // button_remove // this.button_remove.Location = new System.Drawing.Point(130, 24); this.button_remove.Name = "button_remove"; this.button_remove.Size = new System.Drawing.Size(75, 23); this.button_remove.TabIndex = 8; this.button_remove.Text = "删除"; this.button_remove.UseVisualStyleBackColor = true; this.button_remove.Click += new System.EventHandler(this.button_remove_Click); // // button_all // this.button_all.Location = new System.Drawing.Point(14, 24); this.button_all.Name = "button_all"; this.button_all.Size = new System.Drawing.Size(75, 23); this.button_all.TabIndex = 1; this.button_all.Text = "全部显示"; this.button_all.UseVisualStyleBackColor = true; this.button_all.Click += new System.EventHandler(this.button_all_Click); // // groupBox6 // this.groupBox6.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.groupBox6.Controls.Add(this.dataGridView_results); this.groupBox6.Location = new System.Drawing.Point(257, 562); this.groupBox6.Name = "groupBox6"; this.groupBox6.Size = new System.Drawing.Size(769, 165); this.groupBox6.TabIndex = 14; this.groupBox6.TabStop = false; // // dataGridView_results // this.dataGridView_results.AllowUserToAddRows = false; this.dataGridView_results.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.dataGridView_results.BorderStyle = System.Windows.Forms.BorderStyle.None; this.dataGridView_results.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; this.dataGridView_results.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { this.Column5, this.dataGridViewTextBoxColumn1, this.dataGridViewTextBoxColumn2, this.dataGridViewTextBoxColumn3, this.dataGridViewTextBoxColumn4, this.Column7}); this.dataGridView_results.Location = new System.Drawing.Point(16, 20); this.dataGridView_results.Name = "dataGridView_results"; this.dataGridView_results.RowHeadersVisible = false; this.dataGridView_results.RowHeadersWidth = 51; this.dataGridView_results.RowTemplate.Height = 27; this.dataGridView_results.Size = new System.Drawing.Size(733, 139); this.dataGridView_results.TabIndex = 1; // // Column5 // this.Column5.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; this.Column5.HeaderText = "Column5"; this.Column5.MinimumWidth = 6; this.Column5.Name = "Column5"; // // dataGridViewTextBoxColumn1 // this.dataGridViewTextBoxColumn1.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; this.dataGridViewTextBoxColumn1.HeaderText = "dataGridViewTextBoxColumn1"; this.dataGridViewTextBoxColumn1.MinimumWidth = 6; this.dataGridViewTextBoxColumn1.Name = "dataGridViewTextBoxColumn1"; // // dataGridViewTextBoxColumn2 // this.dataGridViewTextBoxColumn2.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; this.dataGridViewTextBoxColumn2.HeaderText = "dataGridViewTextBoxColumn2"; this.dataGridViewTextBoxColumn2.MinimumWidth = 6; this.dataGridViewTextBoxColumn2.Name = "dataGridViewTextBoxColumn2"; // // dataGridViewTextBoxColumn3 // this.dataGridViewTextBoxColumn3.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; this.dataGridViewTextBoxColumn3.HeaderText = "dataGridViewTextBoxColumn3"; this.dataGridViewTextBoxColumn3.MinimumWidth = 6; this.dataGridViewTextBoxColumn3.Name = "dataGridViewTextBoxColumn3"; // // dataGridViewTextBoxColumn4 // this.dataGridViewTextBoxColumn4.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; this.dataGridViewTextBoxColumn4.HeaderText = "dataGridViewTextBoxColumn4"; this.dataGridViewTextBoxColumn4.MinimumWidth = 6; this.dataGridViewTextBoxColumn4.Name = "dataGridViewTextBoxColumn4"; // // Column7 // this.Column7.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; this.Column7.HeaderText = "Column7"; this.Column7.Name = "Column7"; // // groupBox7 // this.groupBox7.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.groupBox7.Controls.Add(this.button9); this.groupBox7.Controls.Add(this.numericUpDown1); this.groupBox7.Controls.Add(this.label1); this.groupBox7.Controls.Add(this.button4); this.groupBox7.Controls.Add(this.button3); this.groupBox7.Location = new System.Drawing.Point(1032, 562); this.groupBox7.Name = "groupBox7"; this.groupBox7.Size = new System.Drawing.Size(133, 165); this.groupBox7.TabIndex = 15; this.groupBox7.TabStop = false; // // button9 // this.button9.Location = new System.Drawing.Point(29, 94); this.button9.Name = "button9"; this.button9.Size = new System.Drawing.Size(77, 23); this.button9.TabIndex = 8; this.button9.Text = "项目工程"; this.button9.UseVisualStyleBackColor = true; this.button9.Click += new System.EventHandler(this.button9_Click); // // numericUpDown1 // this.numericUpDown1.Location = new System.Drawing.Point(52, 131); this.numericUpDown1.Maximum = new decimal(new int[] { 10, 0, 0, 0}); this.numericUpDown1.Name = "numericUpDown1"; this.numericUpDown1.Size = new System.Drawing.Size(54, 21); this.numericUpDown1.TabIndex = 4; this.numericUpDown1.Value = new decimal(new int[] { 2, 0, 0, 0}); this.numericUpDown1.ValueChanged += new System.EventHandler(this.numericUpDown1_ValueChanged); // // label1 // this.label1.AutoSize = true; this.label1.Location = new System.Drawing.Point(17, 133); this.label1.Name = "label1"; this.label1.Size = new System.Drawing.Size(41, 12); this.label1.TabIndex = 3; this.label1.Text = "小数:"; // // button4 // this.button4.Location = new System.Drawing.Point(29, 57); this.button4.Name = "button4"; this.button4.Size = new System.Drawing.Size(75, 23); this.button4.TabIndex = 1; this.button4.Text = "导出结果"; this.button4.UseVisualStyleBackColor = true; this.button4.Click += new System.EventHandler(this.button4_Click); // // button3 // this.button3.Location = new System.Drawing.Point(29, 20); this.button3.Name = "button3"; this.button3.Size = new System.Drawing.Size(75, 23); this.button3.TabIndex = 0; this.button3.Text = "生成报告"; this.button3.UseVisualStyleBackColor = true; this.button3.Click += new System.EventHandler(this.button3_Click); // // groupBox3 // this.groupBox3.Controls.Add(this.lbl_areaRate); this.groupBox3.Controls.Add(this.lbl_countPer); this.groupBox3.Controls.Add(this.lbl_areaContent); this.groupBox3.Controls.Add(this.lbl_count); this.groupBox3.Controls.Add(this.label5); this.groupBox3.Controls.Add(this.label4); this.groupBox3.Controls.Add(this.label3); this.groupBox3.Controls.Add(this.label2); this.groupBox3.Location = new System.Drawing.Point(184, 439); this.groupBox3.Name = "groupBox3"; this.groupBox3.Size = new System.Drawing.Size(394, 116); this.groupBox3.TabIndex = 16; this.groupBox3.TabStop = false; this.groupBox3.Text = "平均结果"; // // lbl_areaRate // this.lbl_areaRate.AutoSize = true; this.lbl_areaRate.Location = new System.Drawing.Point(256, 61); this.lbl_areaRate.Name = "lbl_areaRate"; this.lbl_areaRate.Size = new System.Drawing.Size(0, 12); this.lbl_areaRate.TabIndex = 7; // // lbl_countPer // this.lbl_countPer.AutoSize = true; this.lbl_countPer.Location = new System.Drawing.Point(256, 20); this.lbl_countPer.Name = "lbl_countPer"; this.lbl_countPer.Size = new System.Drawing.Size(0, 12); this.lbl_countPer.TabIndex = 6; // // lbl_areaContent // this.lbl_areaContent.AutoSize = true; this.lbl_areaContent.Location = new System.Drawing.Point(81, 61); this.lbl_areaContent.Name = "lbl_areaContent"; this.lbl_areaContent.Size = new System.Drawing.Size(0, 12); this.lbl_areaContent.TabIndex = 5; // // lbl_count // this.lbl_count.AutoSize = true; this.lbl_count.Location = new System.Drawing.Point(63, 21); this.lbl_count.Name = "lbl_count"; this.lbl_count.Size = new System.Drawing.Size(0, 12); this.lbl_count.TabIndex = 4; // // label5 // this.label5.AutoSize = true; this.label5.Location = new System.Drawing.Point(179, 61); this.label5.Name = "label5"; this.label5.Size = new System.Drawing.Size(77, 12); this.label5.TabIndex = 3; this.label5.Text = "面积百分比:"; // // label4 // this.label4.AutoSize = true; this.label4.Location = new System.Drawing.Point(179, 20); this.label4.Name = "label4"; this.label4.Size = new System.Drawing.Size(77, 12); this.label4.TabIndex = 2; this.label4.Text = "个数百分比:"; // // label3 // this.label3.AutoSize = true; this.label3.Location = new System.Drawing.Point(16, 61); this.label3.Name = "label3"; this.label3.Size = new System.Drawing.Size(65, 12); this.label3.TabIndex = 1; this.label3.Text = "面积含量:"; // // label2 // this.label2.AutoSize = true; this.label2.Location = new System.Drawing.Point(16, 21); this.label2.Name = "label2"; this.label2.Size = new System.Drawing.Size(41, 12); this.label2.TabIndex = 0; this.label2.Text = "个数:"; // // PolyphaseCounterAnalysisDialog // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(1177, 744); this.Controls.Add(this.groupBox3); this.Controls.Add(this.groupBox7); this.Controls.Add(this.groupBox6); this.Controls.Add(this.groupBox5); this.Controls.Add(this.groupBox_review); this.Controls.Add(this.groupBox2); this.Controls.Add(this.groupBox1); this.Controls.Add(this.groupBox4); this.Name = "PolyphaseCounterAnalysisDialog"; this.Text = "多相统计分析"; this.Controls.SetChildIndex(this.groupBox4, 0); this.Controls.SetChildIndex(this.groupBox1, 0); this.Controls.SetChildIndex(this.groupBox2, 0); this.Controls.SetChildIndex(this.groupBox_review, 0); this.Controls.SetChildIndex(this.groupBox5, 0); this.Controls.SetChildIndex(this.groupBox6, 0); this.Controls.SetChildIndex(this.groupBox7, 0); this.Controls.SetChildIndex(this.groupBox3, 0); this.groupBox4.ResumeLayout(false); this.groupBox1.ResumeLayout(false); this.groupBox1.PerformLayout(); this.groupBox2.ResumeLayout(false); ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit(); this.groupBox5.ResumeLayout(false); this.groupBox6.ResumeLayout(false); ((System.ComponentModel.ISupportInitialize)(this.dataGridView_results)).EndInit(); this.groupBox7.ResumeLayout(false); this.groupBox7.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).EndInit(); this.groupBox3.ResumeLayout(false); this.groupBox3.PerformLayout(); this.ResumeLayout(false); } private void showImg(object sender, EventArgs e) { listView1.Focus(); if (this.imgIndex != -1) { //滚动到指定的行位置 this.listView1.EnsureVisible(this.imgIndex); this.listView1.Items[imgIndex].Focused = true; this.listView1.Items[imgIndex].Selected = true; //如果是脚本执行,将参数带入 if (appWorkspace.ScriptRunning && appWorkspace.ScriptCurrentParam != null) { this.initScriptValues = true;//ScriptAutomatic //Boolean initScriptValues = true; ////在这里反射出对应功能的参数类 string className = InvariantData.path_Action + ".Action" + menuId; ParamObject param = (ParamObject)System.Reflection.Assembly.Load(InvariantData.assembly_Data).CreateInstance(className); foreach (Args arg in param.Lists) { Args param1 = appWorkspace.ScriptCurrentParam.Lists.Find(m => m.Key.Equals(arg.Key)); if (param1.value != null) arg.Value = param1.value; getValue(arg.key, arg.Value); } appWorkspace.ScriptCurrentParam = null;//阻止第二次进入仍然被赋值参数 } else {//读取上次关闭窗口时保存的参数 getLastData(); } if (this.initScriptValues && this.appWorkspace.ScriptAutomatic) this.startScriptAutomaticAction(); } } private void listView1_SelectedIndexChanged(object sender, EventArgs e) { if (this.listView1.FocusedItem != null && this.listView1.FocusedItem.Selected) { this.imageMat = this.appWorkspace.DocumentWorkspaces[this.listView1.FocusedItem.Index].CompositionSurface.CreatedAliasedMat(); Document document = Document.FromImageMat(imageMat.Clone()); this.documentWorkspace.Document = document; this.documentWorkspace.Visible = true; this.documentWorkspace.GraphicsList = this.appWorkspace.DocumentWorkspaces[this.listView1.FocusedItem.Index].GraphicsList; this.documentWorkspace.phaseModels = this.appWorkspace.DocumentWorkspaces[this.listView1.FocusedItem.Index].phaseModels; this.dataGridView1.Rows.Clear(); lbl_count.Text = "0"; lbl_countPer.Text = "0"; lbl_areaContent.Text = "0"; lbl_areaRate.Text = "0"; this.applyButtonImpl(sender, e); } } private void show_avg() { if (listView1.FocusedItem != null) { var results = counterResults.Where(p => p.GraphName.Equals(listView1.FocusedItem.Text)); if (results.Count() > 0) { lbl_count.Text = AnalysisTools.GetDecNum(results.Average(item => item.Count), decnum); lbl_countPer.Text = AnalysisTools.GetDecNum(results.Average(item => item.CountPercent), decnum); lbl_areaContent.Text = AnalysisTools.GetDecNum(results.Average(item => item.AreaContent), decnum); lbl_areaRate.Text = AnalysisTools.GetDecNum(results.Average(item => item.AreaPercent), decnum); } } } /// /// 参数改变时,重新处理图像 /// /// /// private void applyButtonImpl(object sender, EventArgs e) { if (this.documentWorkspace.phaseModels.Count==0) { MessageBox.Show(PdnResources.GetString("Menu.Thereisnophasetoanalyze.text")+"!"); return; } if (this.listView1.FocusedItem != null) { dataGridView1.Rows.Clear(); counterResults.Clear(); selectIndex = this.listView1.FocusedItem.Index; for (int i = 0; i < this.appWorkspace.DocumentWorkspaces[selectIndex].phaseModels.Count; i++) { PhaseModel pModel = this.appWorkspace.DocumentWorkspaces[selectIndex].phaseModels[i]; if (pModel.mat == null) { continue; } Color pColor = new Color(); pColor = Color.FromArgb(pModel.color); Mat[] contours = null; Mat hierarchy = new Mat(); Mat mat = Mat.FromImageData(pModel.mat.ToBytes(), ImreadModes.Grayscale); Cv2.FindContours(mat, out contours, hierarchy, RetrievalModes.External, ContourApproximationModes.ApproxNone); CounterResult result = new CounterResult(); result.GraphName = listView1.FocusedItem.Text; result.PolyphaseName = pModel.name; result.Count = contours.Count(); //如果存在视场 if (this.appWorkspace.DocumentWorkspaces[selectIndex].GraphicsList.IsExsitView()) { //相面积 long phaseArea = AnalysisTools.GetPointsFromMat(pModel.mat); //总面积 long fullArea = AnalysisTools.GetPointsFromMat(this.imageMat.Clone()); //获取合并视场 Bitmap frontTarget = this.documentWorkspace.GetFullSizeWithRegion(this.appWorkspace.DocumentWorkspaces[this.listView1.FocusedItem.Index].CompositionSurface.CreateAliasedBitmap()/* //待测试 this.bitmap*/); //获取视图中相的点合计 //long fullArea = AnalysisTools.GetPointsFromMat(BitmapConverter.ToMat(frontTarget)); long fullViewArea = AnalysisTools.GetPointsFromMat(PaintDotNet.Camera.Tools.ToMat(frontTarget)); result.Area = phaseArea; if (fullArea > 0) { result.AreaContent = (double)phaseArea / fullViewArea * 100; //result.AreaPercent = (double)phaseArea / fullArea * 100; } else { result.AreaContent = 0; //result.AreaPercent = 0; } } else { ///处理百分比 long phaseArea = AnalysisTools.GetPointsFromMat(pModel.mat); long fullArea = AnalysisTools.GetPointsFromMat(this.imageMat/*.Clone()*/); result.Area = phaseArea; if (fullArea > 0) { result.AreaContent = (double)phaseArea / fullArea * 100; }else { result.AreaContent = 0; } } counterResults.Add(result); } int iCount = counterResults.Sum(u => u.Count); double amountArea = counterResults.Sum(u => u.Area); for (int j = 0; j < counterResults.Count; j++) { if (iCount > 0) { counterResults[j].CountPercent = (double)counterResults[j].Count / iCount * 100; }else { counterResults[j].CountPercent = 0; } if (counterResults[j].AreaPercent == 0) { if (amountArea > 0) { counterResults[j].AreaPercent = (double)counterResults[j].Area / amountArea * 100; }else { counterResults[j].AreaPercent = 0; } } dataGridView1.Rows.Add(counterResults[j].PolyphaseName, counterResults[j].Count, AnalysisTools.GetDecNum(counterResults[j].CountPercent,decnum), AnalysisTools.GetDecNum(counterResults[j].AreaPercent,decnum), AnalysisTools.GetDecNum(counterResults[j].AreaContent,decnum)); } show_avg(); } } private void Draw(Graphics graphics) { if (this.documentWorkspace.phaseModels.Count > 0) { foreach (PhaseModel model in this.documentWorkspace.phaseModels) { if (model.choise && model.mat != null) { Bitmap map = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(model.mat); graphics.DrawImage(map, 0, 0, map.Width, map.Height); } } if (this.documentWorkspace.GraphicsList != null) { this.documentWorkspace.GraphicsList.Draw(graphics); } } } private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) { } private void button2_Click(object sender, EventArgs e) { if (listView1.SelectedItems.Count == 0) { MessageBox.Show(PdnResources.GetString("Menu.seselecttheimagethatyouwanttoan.Text")+"!"); return; } if (this.documentWorkspace.phaseModels.Count == 0) { return; } String tag = listView1.FocusedItem.Text; List tempBit = new List(); if (listView1.FocusedItem != null) { if (finalResults.FindAll(item => item.GraphName.Equals(listView1.FocusedItem.Text)).Count == 0) { listBox_analysisResult.Items.Add(this.listView1.FocusedItem.Text); listBox_analysisResult.SetItemChecked(listBox_analysisResult.Items.Count - 1, true); for (int i = 0; i < counterResults.Count; i++) { CounterResult aResult = counterResults[i]; finalResults.Add(aResult); dataGridView_results.Rows.Add(aResult.GraphName, aResult.PolyphaseName, aResult.Count, AnalysisTools.GetDecNum(aResult.CountPercent, decnum), AnalysisTools.GetDecNum(aResult.AreaPercent, decnum), AnalysisTools.GetDecNum(aResult.AreaContent, decnum)); } } else { DialogResult dr = MessageBox.Show(PdnResources.GetString("Menu.Theresuethertoreplace.text")+"?", PdnResources.GetString("Form.OkButton.Text"), MessageBoxButtons.OKCancel, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1); if (dr != DialogResult.OK) { return; } finalResults.RemoveAll(item => item.GraphName.Equals(listView1.FocusedItem.Text)); finalResults.AddRange(counterResults); List list = new List(); foreach (var s in this.listBox_analysisResult.Items) { list.Add(s.ToString()); } this.listBox_analysisResult.Items.Clear(); foreach (var s in list) { this.listBox_analysisResult.Items.Add(s); } var thisindex = this.listBox_analysisResult.Items.IndexOf(listView1.FocusedItem.Text); this.dataGridView_results.Rows.Clear(); listBox_analysisResult.SetItemChecked(thisindex, true); for (int i = 0; i < counterResults.Count; i++) { CounterResult result = counterResults[i]; dataGridView_results.Rows.Add(result.GraphName, result.PolyphaseName, result.Count, AnalysisTools.GetDecNum(result.CountPercent, decnum), AnalysisTools.GetDecNum(result.AreaPercent, decnum), AnalysisTools.GetDecNum(result.AreaContent, decnum)); } } for (int i = 0; i < this.documentWorkspace.phaseModels.Count; i++) { double pantographRatio = (double)this.appWorkspace.DocumentWorkspaces[this.listView1.FocusedItem.Index].GetRulerMultiple(MeasurementUnit.Micron);//标尺*放大倍数 Bitmap originalBit = this.appWorkspace.DocumentWorkspaces[this.listView1.FocusedItem.Index].CompositionSurface.CreateAliasedBitmap(); originalBit.Tag = pantographRatio; tempBit.Add(originalBit); Bitmap newBit = originalBit.Clone(new Rectangle(0, 0, originalBit.Width, originalBit.Height), originalBit.PixelFormat); Graphics graphics = Graphics.FromImage(newBit); Bitmap processedBit = BitmapConverter.ToBitmap(this.documentWorkspace.phaseModels[i].mat); graphics.DrawImage(processedBit, new PointF(0, 0)); newBit.Tag = pantographRatio; tempBit.Add(newBit); } if (bitDic.ContainsKey(tag)) { bitDic[tag].Clear(); bitDic[tag] = tempBit; } else { bitDic.Add(tag, tempBit); } } } private void button_all_Click(object sender, EventArgs e) { dataGridView_results.Rows.Clear(); if (this.is_all % 2 == 0) { for (int i = 0; i < listBox_analysisResult.Items.Count; i++) { listBox_analysisResult.SetItemChecked(i, false); } } else { for (int i = 0; i < listBox_analysisResult.Items.Count; i++) { listBox_analysisResult.SetItemChecked(i, true); } for (int i = 0; i < finalResults.Count; i++) { CounterResult aResult = finalResults[i]; dataGridView_results.Rows.Add(aResult.GraphName, aResult.PolyphaseName, aResult.Count, AnalysisTools.GetDecNum(aResult.CountPercent, decnum), AnalysisTools.GetDecNum(aResult.AreaPercent, decnum), AnalysisTools.GetDecNum(aResult.AreaContent, decnum)); } } this.is_all += 1; } private void button_remove_Click(object sender, EventArgs e) { var removeList = new List(); if (listBox_analysisResult.CheckedItems != null && listBox_analysisResult.CheckedItems.Count > 0) { DialogResult dr = MessageBox.Show(PdnResources.GetString("Menu.ertodeletetheselectedanalysisres.Text")+"?", PdnResources.GetString("Menu.Edit.Delete.Text"), MessageBoxButtons.OKCancel, MessageBoxIcon.Question); if (dr == DialogResult.OK) { dataGridView_results.Rows.Clear(); foreach (var s in listBox_analysisResult.CheckedItems) { if (finalResults.FindAll(item => item.GraphName.Equals(s.ToString())).Count > 0) { finalResults.RemoveAll(item => item.GraphName.Equals(s.ToString())); removeList.Add(s.ToString()); } else { MessageBox.Show(PdnResources.GetString("Menu.Resultsdeleted.Text")); } } for (int i = 0; i < finalResults.Count; i++) { CounterResult aResult = finalResults[i]; dataGridView_results.Rows.Add(aResult.GraphName, aResult.PolyphaseName, aResult.Count, AnalysisTools.GetDecNum(aResult.CountPercent, decnum), AnalysisTools.GetDecNum(aResult.AreaPercent, decnum), AnalysisTools.GetDecNum(aResult.AreaContent, decnum)); } foreach (var m in removeList) { listBox_analysisResult.Items.Remove(m); } } } else { MessageBox.Show(PdnResources.GetString("Menu.Pleaseselecttheimagetodelete.Text")+"!"); } } private void btn_close_Click(object sender, EventArgs e) { this.Close(); } private void numericUpDown1_ValueChanged(object sender, EventArgs e) { decnum = (int)numericUpDown1.Value; refesh_grids(); } private void refesh_grids() { dataGridView1.Rows.Clear(); for (int i=0;i 0) { foreach (var s in listBox_analysisResult.CheckedItems) { List findResults = finalResults.FindAll(item => item.GraphName.Equals(s.ToString())); for (int i = 0; i < findResults.Count; i++) { CounterResult result = findResults[i]; dataGridView_results.Rows.Add(result.GraphName, result.PolyphaseName, result.Count, AnalysisTools.GetDecNum(result.CountPercent, decnum), AnalysisTools.GetDecNum(result.AreaPercent, decnum), AnalysisTools.GetDecNum(result.AreaContent, decnum)); } } } } private void button1_Click(object sender, EventArgs e) { AnalyzeSettingDialog recombinationRateSetDialog = new AnalyzeSettingDialog(this, "Template.Manager.item2.PolyphaseCounterAnalysis"); if (recombinationRateSetDialog.hasModule) { recombinationRateSetDialog.StartPosition = FormStartPosition.CenterScreen; recombinationRateSetDialog.ShowDialog(); } else { recombinationRateSetDialog = null; } } private void button4_Click(object sender, EventArgs e) { if (this.dataGridView_results.Rows.Count > 0) { SaveFileDialog exe = new SaveFileDialog(); exe.Filter = "Execl files (*.xlsx)|*.xlsx"; exe.FilterIndex = 0; exe.RestoreDirectory = true; exe.Title = "Export Excel File"; exe.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory); exe.FileName = PdnResources.GetString("Menu.GeneralAnalysis.MultiphaseStatistics.Text")+ PdnResources.GetString("Menu.Analysisresult.text") + DateTime.Now.ToString("yyyyMMddhhmmss"); DialogResult dr = exe.ShowDialog(); if (dr == DialogResult.OK) { DataTable dtb = new DataTable(); foreach (DataGridViewColumn c in this.dataGridView_results.Columns) { dtb.Columns.Add(c.HeaderText); } for (int r = 0; r < this.dataGridView_results.Rows.Count; r++) { DataRow dataRow = dtb.NewRow(); for (int c = 0; c < this.dataGridView_results.Rows[r].Cells.Count; c++) { dataRow[this.dataGridView_results.Columns[c].HeaderText] = this.dataGridView_results.Rows[r].Cells[c].Value; } dtb.Rows.Add(dataRow); } List list = new List(); list.Add(dtb); this.appWorkspace.ExportDataToExcelWithProgress(list, exe.FileName, true, false, true); } } else { MessageBox.Show(PdnResources.GetString("Menu.Noanalysisresults.text")+"!"); } } private void button3_Click(object sender, EventArgs e) { if (checkBox1.Checked) { AnalyzeSettingDialog recombinationRateSetDialog = new AnalyzeSettingDialog(this, "Template.Manager.item2.PolyphaseCounterAnalysis"); if (recombinationRateSetDialog.hasModule) { recombinationRateSetDialog.StartPosition = FormStartPosition.CenterScreen; recombinationRateSetDialog.ShowDialog(); } else { recombinationRateSetDialog = null; } } bitList.Clear(); if (this.analyzeSettingModel != null && !string.IsNullOrEmpty(this.analyzeSettingModel.analyzeClassify)) { //获取word书签与excel单元格的关系,以字典方式存储 List mic_module_infos = mic_module_infos_BLL.FindAll().FindAll(a => a.analyze_classify == this.analyzeSettingModel.analyzeClassify); Dictionary tagInfos = new Dictionary(); if (mic_module_infos != null && mic_module_infos.Count > 0) { foreach (mic_module_infos info in mic_module_infos) { tagInfos.Add(info.tag_name, info.cell_position); } } List> analysisContent = new List>(); List nameList = new List(); for (int i = 0; i < this.dataGridView_results.Rows.Count; i++) { List content1 = new List(); if (i == 0) { content1.Add(this.dataGridView_results.Columns[0].HeaderText); content1.Add(this.dataGridView_results.Columns[1].HeaderText); content1.Add(this.dataGridView_results.Columns[2].HeaderText); content1.Add(this.dataGridView_results.Columns[3].HeaderText); content1.Add(this.dataGridView_results.Columns[4].HeaderText); content1.Add(this.dataGridView_results.Columns[5].HeaderText); analysisContent.Add(content1); } content1 = new List(); content1.Add(this.dataGridView_results.Rows[i].Cells[0].Value.ToString()); content1.Add(this.dataGridView_results.Rows[i].Cells[1].Value.ToString()); content1.Add(this.dataGridView_results.Rows[i].Cells[2].Value.ToString()); content1.Add(this.dataGridView_results.Rows[i].Cells[3].Value.ToString()); content1.Add(this.dataGridView_results.Rows[i].Cells[4].Value.ToString()); content1.Add(this.dataGridView_results.Rows[i].Cells[5].Value.ToString()); analysisContent.Add(content1); string tag = this.dataGridView_results.Rows[i].Cells[0].Value.ToString(); if (nameList.IndexOf(tag) == -1) { nameList.Add(tag); } } foreach (var s in nameList) { if (bitDic.ContainsKey(s)) { foreach (var m in bitDic[s]) { bitList.Add(bitDic[s][bitDic[s].IndexOf(m)]); } } } this.appWorkspace.CreateAnalysisReport(this.analyzeSettingModel, analysisContent, bitList, tagInfos); } else MessageBox.Show(PdnResources.GetString("Menu.Pleasesettheanalysisreportfirst.text")+"!"); } private void button9_Click(object sender, EventArgs e) { if (this.dataGridView_results.Rows.Count == 0) { MessageBox.Show(PdnResources.GetString("Menu.Noresults.text")); return; } if (this.analyzeSettingModel == null) { MessageBox.Show(PdnResources.GetString("Menu.Pleasesetiirst.Text")); return; } //获取项目工程内的文件夹路径 ProjectEngineering.NodeItem item = this.appWorkspace.GetInsertProjectPath(2, "Menu.GeneralAnalysis.MultiphaseStatistics.Text", this.analyzeSettingModel.savePath); if (item != null) { //向文件夹内保存图片和报告 if (!string.IsNullOrEmpty(this.analyzeSettingModel.analyzeClassify)) { //获取word书签与excel单元格的关系,以字典方式存储 List mic_module_infos = mic_module_infos_BLL.FindAll().FindAll(a => a.analyze_classify == this.analyzeSettingModel.analyzeClassify); Dictionary tagInfos = new Dictionary(); if (mic_module_infos != null && mic_module_infos.Count > 0) { foreach (mic_module_infos info in mic_module_infos) { tagInfos.Add(info.tag_name, info.cell_position); } } List> analysisContent = new List>(); List> inclusionList = new List>(); List exportModel = new List(); List bitImgList = new List(); List titleContent = new List(); List nameList = new List(); for (int i = 0; i < this.dataGridView_results.Rows.Count; i++) { List content1 = new List(); if (i == 0) { content1.Add(this.dataGridView_results.Columns[0].HeaderText); content1.Add(this.dataGridView_results.Columns[1].HeaderText); content1.Add(this.dataGridView_results.Columns[2].HeaderText); content1.Add(this.dataGridView_results.Columns[3].HeaderText); content1.Add(this.dataGridView_results.Columns[4].HeaderText); analysisContent.Add(content1); titleContent.AddRange(content1); } content1 = new List(); content1.Add(this.dataGridView_results.Rows[i].Cells[0].Value.ToString()); content1.Add(this.dataGridView_results.Rows[i].Cells[1].Value.ToString()); content1.Add(this.dataGridView_results.Rows[i].Cells[2].Value.ToString()); content1.Add(this.dataGridView_results.Rows[i].Cells[3].Value.ToString()); content1.Add(this.dataGridView_results.Rows[i].Cells[4].Value.ToString()); analysisContent.Add(content1); string tag = this.dataGridView_results.Rows[i].Cells[0].Value.ToString(); if (nameList.IndexOf(tag) == -1) { nameList.Add(tag); } var export = exportModel.Where(m => m.picName == tag).FirstOrDefault(); if (export == null) { ExportProjectModel exportProjectModel = new ExportProjectModel(); exportProjectModel.dataList = new List>(); exportProjectModel.dataList.Add(titleContent); exportProjectModel.dataList.Add(content1); exportProjectModel.picName = tag; exportProjectModel.tagName = PdnResources.GetString("Menu.GeneralAnalysis.MultiphaseStatistics.Text"); exportModel.Add(exportProjectModel); } else { exportModel[exportModel.IndexOf(export)].dataList.Add(content1); } } foreach (var s in nameList) { if (bitDic.ContainsKey(s)) { foreach (var m in bitDic[s]) { bitImgList.Add(bitDic[s][bitDic[s].IndexOf(m)]); } } } try { this.appWorkspace.CreateAnalysisReport(this.analyzeSettingModel, analysisContent, exportModel, bitImgList, tagInfos, item.path, item.code); } catch (Exception ex) { MessageBox.Show(ex.Message); } } else { MessageBox.Show(PdnResources.GetString("Menu.Pleasesettheanalysisreportfirst.text")+"!"); return; } //保存项目信息到数据库 this.appWorkspace.InsertIntoDB(this.analyzeSettingModel, item); } } private void getValue(string key, Object value) { switch (key) { case "OpenWhileExportReport": checkBox1.Checked = Convert.ToBoolean(value); break; case "CalculatorDecimalDigits": numericUpDown1.Value = Convert.ToDecimal(value); break; case "ExportResults": isExportResults = Convert.ToBoolean(value); break; case "ExportReports": isExportReports = Convert.ToBoolean(value); break; case "ExportProjects": isExportProjects = Convert.ToBoolean(value); break; } } #region [应用全部保存全部-私有方法] /// /// 应用全部私有方法 /// private void applyAll() { } /// /// 保存全部私有方法 /// private void saveAll() { for (int i = 0; i < listView1.Items.Count; i++) { this.listView1.EnsureVisible(i); this.listView1.Items[i].Focused = true; this.listView1.Items[i].Selected = true; this.button2.PerformClick(); } } #endregion #region [脚本录制] private void getScriptRecording() { string className = InvariantData.path_Action + ".Action" + menuId; ParamObject param = (ParamObject)System.Reflection.Assembly.Load(InvariantData.assembly_Data).CreateInstance(className); List args = param.Lists; foreach (var item in args) { item.value = setScriptRecording(item.key); } appWorkspace.SetScriptStartRecording(this.menuId, menuName, args); } private object setScriptRecording(string key) { object value = null; switch (key) { case "OpenWhileExportReport": value = checkBox1.Checked; break; case "CalculatorDecimalDigits": value = numericUpDown1.Value; break; case "ExportResults": value = isExportResults; break; case "ExportReports": value = isExportReports; break; case "ExportProjects": value = isExportProjects; break; } return value; } #endregion } }