using OpenCvSharp; using PaintDotNet.Base.Functionodel; using PaintDotNet.CustomControl; using PaintDotNet.DbOpreate.DbModel; using PaintDotNet.Instrument; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Drawing.Drawing2D; using System.Windows.Forms; namespace PaintDotNet.DedicatedAnalysis.NonferrousMetals { internal class NonFMetalsStandardDialog : PdnBaseForm { #region 属性 //是否进行了结果(厚度)计算 protected bool calculate1d = false; /// /// 计算结果的表格集合 /// private List resultTableList = new List(); protected Panel panelC; /// /// 调色板 /// private ColorsForm colorsFormGrid; /// /// 主控件 /// protected AppWorkspace appWorkspace; //二值化集成1 protected BinaryClass binaryClass; protected int menuId; /// /// 公共按钮 /// private CommonControlButtons commonControlButtons; /// /// 图像面板 /// protected DocumentWorkspaceWindow documentWorkspace; /// /// 当前选择的图片 /// protected Bitmap bitmap; /// /// 当前选择的图片 /// protected Mat matOrg; ///// ///// 当前选择的图片 ///// //private Mat mat; protected string oldSelectItem; public bool comboboxChange = true; /// /// 图形上所有的点 /// protected List linePointList = new List(); /// /// 直线图形上所有的点 /// protected List> straightLinePointList = new List>(); /// /// 圆圈图形上所有的点,其中第一个点为圆心坐标 /// protected List> roundLinePointList = new List>(); /// /// 是否选择了图片 /// protected int selectPicture = -1; /// /// 用于编号的坐标点集合,value为: Nx5 matrix (CV_32S) of statistics: x0, y0, width0, height0, area0 + [1内部 0外部] + [label] /// protected Dictionary> massLabelPoints = new Dictionary>(); /// /// 矩形内的连通域 /// protected int within = 0; /// /// 保存用于生成报告的图片 /// protected List bitList; /// /// 储存点击保存结果后的所有原图与分析图 /// protected Dictionary> bitDic = new Dictionary>(); /// /// 中间数据 /// protected List tempDataModel = new List(); /// /// 分析结果暂存 /// protected List dataTable_Totals = new List(); /// /// 详细分析结果暂存 /// protected List dataTables = new List(); /// /// 全部显示 /// protected bool allShow = false; /// /// 详细列表需要求和的index集合 /// protected List IndexChangedFromIndex = new List(); /// /// 列表需要求和的index集合,value值为:1 求和 2:平均 3:级别计算 + [输入数据index位置,-1则需要调用自定义方法进行计算] /// protected Dictionary IndexChangedToIndex = new Dictionary(); #endregion #region 组件 private GroupBox groupBox_operating; protected GroupBox groupBox_img; protected ListView lstView_img; private ImageList imageList_img; private IContainer components; protected GroupBox groupBox_review; protected GroupBox groupBox_report; private Label label_resultPrecision; private Button button_exportResults; private Button button_generateReport; protected GroupBox groupBox6groupBox_analysisResult2; protected GroupBox groupBox_analysisResult1; private Button button_setting; protected CheckBox checkBox_generateReport_opensetting; protected DataGridView dataGridView2; protected ListView listView2; private Button button16; private Button button12; private Button button11; protected NumericUpDown numericUpDown1_0; private Button button1; private BinaryControlSmaller bc; protected DataGridView dataGridView_Total; private Button button2; private Button btn_saveresult; #endregion #region 构造函数 public NonFMetalsStandardDialog(AppWorkspace appWorkspace, int menuId) { this.appWorkspace = appWorkspace; this.Icon = PdnInfo.AppIcon; this.Load += new System.EventHandler(this.NonFMetalsStandardDialog_Load); InitializeComponent(); InitializeCustomControl(); InitializeLanguageText(); this.menuId = menuId; this.binaryClass = new BinaryClass(menuId); Initialize(); SubclassInitialize(); //初始化头 this.listView2.View = View.Details; ColumnHeader header0 = new ColumnHeader(); header0.Text = ""; header0.Width = 180; this.listView2.Columns.Add(header0); //二值化集成2 bc.OriginCheckedChangedAction += new EventHandler(this.bcOriginCheckedChanged);//初始化原图勾选改变事件 binaryClass.createDocumentItemsSmaller(new string[] { PdnResources.GetString("Menu.BinaryAction.BinaryExtraction.Text"), PdnResources.GetString("Menu.Grainboundarytoreproduce.text"), PdnResources.GetString("Menu.Thegrainsareshownindifferentcolors.text") } , this.bc, this.appWorkspace, this.documentWorkspace, this.lstView_img);//初始化相的工作结构 //############################################## binaryClass.BinaryImplFinishAction += new EventHandler(this.bClassBinaryImplFinishAction);//二值化后续处理事件 this.button11.Visible = true; this.button16.Visible = false; // //初始化色板 // this.colorsFormGrid = new ColorsForm(); this.colorsFormGrid.StartPosition = FormStartPosition.CenterScreen; this.colorsFormGrid.setSaveBtn_Click(new System.EventHandler(this.gridColorChanged)); SetAnalyzeModelFromXml(getTemplateName()); this.Shown += new EventHandler(this.ShownChoiseItemAndInitData); } private void Dialog_FormClosing(object sender, FormClosingEventArgs e) { binaryClass.saveParams(); } private void ShownChoiseItemAndInitData(object sender, EventArgs e) { if (index > -1) { //滚动到指定的行位置 this.lstView_img.EnsureVisible(index); if (this.lstView_img.SelectedItems != null && this.lstView_img.SelectedItems.Count > 0) { if (this.selectPicture == this.lstView_img.SelectedItems[0].Index) return; this.bitmap = this.appWorkspace.DocumentWorkspaces[this.lstView_img.SelectedItems[0].Index].CompositionSurface.CreateAliasedBitmap(); if (this.selectPicture >= 0 && this.selectPicture < this.imageList_img.Images.Keys.Count) binaryClass.saveMat(this.imageList_img.Images.Keys[this.selectPicture]); //二值化集成4 binaryClass.listView1_SelectedIndexChanged(this.bitmap, getCurrentWorkTag()); binaryClass.RefreshHistogramControl1Values(); bool existViewFlag = this.appWorkspace.DocumentWorkspaces[this.lstView_img.SelectedItems[0].Index].GraphicsList.IsExsitView(); if (!existViewFlag) { matOrg = OpenCvSharp.Extensions.BitmapConverter.ToMat(bitmap); } else { matOrg = OpenCvSharp.Extensions.BitmapConverter.ToMat(this.appWorkspace.DocumentWorkspaces[this.lstView_img.SelectedItems[0].Index].GetFullSizeWithRegion()); } this.selectPicture = this.lstView_img.SelectedItems[0].Index; //this.loctation = new PointF(this.documentWorkspace.CompositionSurface.Width / 2, this.documentWorkspace.CompositionSurface.Height / 2); //AddRectangleToRectangleFCaps(); this.documentWorkspace.Refresh(); calculate1d = false; refreshWhileImgChanged(); //this.commonControlButtons.Visible = true;//0914###18449 this.documentWorkspace.Refresh(); } } //// 初始化数据 //this.bitmap = this.appWorkspace.DocumentWorkspaces[index].CompositionSurface.CreateAliasedBitmap(); //Document document = Document.FromImage(bitmap); //this.documentWorkspace.Document = document; //this.documentWorkspace.Visible = true; //this.documentWorkspace.GraphicsList = this.appWorkspace.DocumentWorkspaces[index].GraphicsList; //this.applyButtonImpl(null, null); ////显示直方图 //this.histogramControl1.CreateHistogram(this.bitmap, true, 339, 130, 0); } public NonFMetalsStandardDialog() { InitializeComponent(); } #endregion #region 初始化组件 private void InitializeLanguageText() { this.groupBox_operating.Text = PdnResources.GetString("Menu.operation.text"); this.button2.Text = PdnResources.GetString("Menu.reckoning.text"); this.checkBox_generateReport_opensetting.Text = PdnResources.GetString("Menu.Opensettingsatingreport.text"); this.button_setting.Text = PdnResources.GetString("Menu.Setting.Text"); this.btn_saveresult.Text = PdnResources.GetString("Menu.Saveresult.text"); this.groupBox_img.Text = PdnResources.GetString("Menu.Tools.ImageIndex.Text"); this.groupBox_review.Text = PdnResources.GetString("Menu.Preview.text"); this.button1.Text = PdnResources.GetString("Menu.Exportproject.text"); this.label_resultPrecision.Text = PdnResources.GetString("Menu.Decimal.text"); this.button_exportResults.Text = PdnResources.GetString("Menu.Exportresults.text"); this.button_generateReport.Text = PdnResources.GetString("Menu.Tools.CreateReport.Text"); this.groupBox_analysisResult1.Text = PdnResources.GetString("Menu.Analysisresult.text"); this.button11.Text = PdnResources.GetString("Menu.Showall.text"); this.button16.Text = PdnResources.GetString("Menu.Cancelshowall.text"); this.button12.Text = PdnResources.GetString("Menu.Edit.Delete.Text"); } private void InitializeCustomControl() { // // bc // this.bc = new PaintDotNet.CustomControl.BinaryControlSmaller(); this.bc.BinaryBackColor = System.Drawing.Color.Red; this.bc.BinaryChecked = false; this.bc.BinaryStyle = 1; this.bc.Location = new System.Drawing.Point(176, 70); this.bc.Name = "bc"; this.bc.OriginChecked = false; this.bc.scope1End = 0D; this.bc.scope1Start = 0D; this.bc.scope2End = 0D; this.bc.scope2Start = 0D; this.bc.scope3End = 0D; this.bc.scope3Start = 0D; this.bc.Size = new System.Drawing.Size(360, 247); this.bc.TabIndex = 38; this.Controls.Add(this.bc); this.Controls.SetChildIndex(this.bc, 0); } private void InitializeComponent() { this.components = new System.ComponentModel.Container(); System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle(); this.groupBox_operating = new System.Windows.Forms.GroupBox(); this.button2 = new System.Windows.Forms.Button(); this.checkBox_generateReport_opensetting = new System.Windows.Forms.CheckBox(); this.button_setting = new System.Windows.Forms.Button(); this.btn_saveresult = new System.Windows.Forms.Button(); this.groupBox_img = new System.Windows.Forms.GroupBox(); this.lstView_img = new System.Windows.Forms.ListView(); this.imageList_img = new System.Windows.Forms.ImageList(this.components); this.groupBox_review = new System.Windows.Forms.GroupBox(); this.groupBox_report = new System.Windows.Forms.GroupBox(); this.button1 = new System.Windows.Forms.Button(); this.numericUpDown1_0 = new System.Windows.Forms.NumericUpDown(); this.label_resultPrecision = new System.Windows.Forms.Label(); this.button_exportResults = new System.Windows.Forms.Button(); this.button_generateReport = new System.Windows.Forms.Button(); this.groupBox6groupBox_analysisResult2 = new System.Windows.Forms.GroupBox(); this.dataGridView_Total = new System.Windows.Forms.DataGridView(); this.dataGridView2 = new System.Windows.Forms.DataGridView(); this.groupBox_analysisResult1 = new System.Windows.Forms.GroupBox(); this.button11 = new System.Windows.Forms.Button(); this.listView2 = new System.Windows.Forms.ListView(); this.button16 = new System.Windows.Forms.Button(); this.button12 = new System.Windows.Forms.Button(); this.groupBox_operating.SuspendLayout(); this.groupBox_img.SuspendLayout(); this.groupBox_report.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDown1_0)).BeginInit(); this.groupBox6groupBox_analysisResult2.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.dataGridView_Total)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.dataGridView2)).BeginInit(); this.groupBox_analysisResult1.SuspendLayout(); this.SuspendLayout(); // // groupBox_operating // this.groupBox_operating.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.groupBox_operating.Controls.Add(this.button2); this.groupBox_operating.Controls.Add(this.checkBox_generateReport_opensetting); this.groupBox_operating.Controls.Add(this.button_setting); this.groupBox_operating.Controls.Add(this.btn_saveresult); this.groupBox_operating.Location = new System.Drawing.Point(13, 12); this.groupBox_operating.Name = "groupBox_operating"; this.groupBox_operating.Size = new System.Drawing.Size(1102, 53); this.groupBox_operating.TabIndex = 12; this.groupBox_operating.TabStop = false; // // 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(911, 20); this.button2.Name = "button2"; this.button2.Size = new System.Drawing.Size(75, 23); this.button2.TabIndex = 7; this.button2.UseVisualStyleBackColor = true; this.button2.Click += new System.EventHandler(this.buttonCalculate_Click); // // checkBox_generateReport_opensetting // this.checkBox_generateReport_opensetting.AutoSize = true; this.checkBox_generateReport_opensetting.ForeColor = System.Drawing.SystemColors.ActiveCaptionText; this.checkBox_generateReport_opensetting.Location = new System.Drawing.Point(91, 24); this.checkBox_generateReport_opensetting.Name = "checkBox_generateReport_opensetting"; this.checkBox_generateReport_opensetting.Size = new System.Drawing.Size(132, 16); this.checkBox_generateReport_opensetting.TabIndex = 6; this.checkBox_generateReport_opensetting.UseVisualStyleBackColor = true; // // button_setting // this.button_setting.Location = new System.Drawing.Point(6, 20); this.button_setting.Name = "button_setting"; this.button_setting.Size = new System.Drawing.Size(75, 23); this.button_setting.TabIndex = 4; this.button_setting.UseVisualStyleBackColor = true; this.button_setting.Click += new System.EventHandler(this.button_setting_Click); // // btn_saveresult // this.btn_saveresult.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.btn_saveresult.Location = new System.Drawing.Point(998, 20); this.btn_saveresult.Name = "btn_saveresult"; this.btn_saveresult.Size = new System.Drawing.Size(75, 23); this.btn_saveresult.TabIndex = 2; this.btn_saveresult.UseVisualStyleBackColor = true; this.btn_saveresult.Click += new System.EventHandler(this.btn_saveresult_Click); // // groupBox_img // this.groupBox_img.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left))); this.groupBox_img.Controls.Add(this.lstView_img); this.groupBox_img.Location = new System.Drawing.Point(13, 72); this.groupBox_img.Margin = new System.Windows.Forms.Padding(4); this.groupBox_img.Name = "groupBox_img"; this.groupBox_img.Padding = new System.Windows.Forms.Padding(4); this.groupBox_img.Size = new System.Drawing.Size(158, 514); this.groupBox_img.TabIndex = 13; this.groupBox_img.TabStop = false; // // lstView_img // this.lstView_img.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.lstView_img.HideSelection = false; this.lstView_img.LargeImageList = this.imageList_img; this.lstView_img.Location = new System.Drawing.Point(8, 26); this.lstView_img.Margin = new System.Windows.Forms.Padding(4); this.lstView_img.MultiSelect = false; this.lstView_img.Name = "lstView_img"; this.lstView_img.Size = new System.Drawing.Size(140, 480); this.lstView_img.TabIndex = 0; this.lstView_img.UseCompatibleStateImageBehavior = false; this.lstView_img.SelectedIndexChanged += new System.EventHandler(this.lstView_img_SelectedIndexChanged); // // imageList_img // this.imageList_img.ColorDepth = System.Windows.Forms.ColorDepth.Depth8Bit; this.imageList_img.ImageSize = new System.Drawing.Size(64, 64); this.imageList_img.TransparentColor = System.Drawing.Color.Transparent; // // 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(541, 72); this.groupBox_review.Name = "groupBox_review"; this.groupBox_review.Size = new System.Drawing.Size(575, 514); this.groupBox_review.TabIndex = 30; this.groupBox_review.TabStop = false; // // groupBox_report // this.groupBox_report.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.groupBox_report.Controls.Add(this.button1); this.groupBox_report.Controls.Add(this.numericUpDown1_0); this.groupBox_report.Controls.Add(this.label_resultPrecision); this.groupBox_report.Controls.Add(this.button_exportResults); this.groupBox_report.Controls.Add(this.button_generateReport); this.groupBox_report.Location = new System.Drawing.Point(974, 592); this.groupBox_report.Name = "groupBox_report"; this.groupBox_report.Size = new System.Drawing.Size(142, 218); this.groupBox_report.TabIndex = 33; this.groupBox_report.TabStop = false; // // button1 // this.button1.Location = new System.Drawing.Point(29, 112); this.button1.Name = "button1"; this.button1.Size = new System.Drawing.Size(75, 23); this.button1.TabIndex = 23; this.button1.UseVisualStyleBackColor = true; this.button1.Click += new System.EventHandler(this.button1_Click); // // numericUpDown1_0 // this.numericUpDown1_0.Location = new System.Drawing.Point(63, 165); this.numericUpDown1_0.Maximum = new decimal(new int[] { 10, 0, 0, 0}); this.numericUpDown1_0.Name = "numericUpDown1_0"; this.numericUpDown1_0.Size = new System.Drawing.Size(56, 21); this.numericUpDown1_0.TabIndex = 22; this.numericUpDown1_0.Value = new decimal(new int[] { 2, 0, 0, 0}); this.numericUpDown1_0.ValueChanged += new System.EventHandler(this.numericUpDown1_0_ValueChanged); // // label_resultPrecision // this.label_resultPrecision.AutoSize = true; this.label_resultPrecision.Location = new System.Drawing.Point(26, 169); this.label_resultPrecision.Name = "label_resultPrecision"; this.label_resultPrecision.Size = new System.Drawing.Size(29, 12); this.label_resultPrecision.TabIndex = 3; // // button_exportResults // this.button_exportResults.Location = new System.Drawing.Point(29, 73); this.button_exportResults.Name = "button_exportResults"; this.button_exportResults.Size = new System.Drawing.Size(75, 23); this.button_exportResults.TabIndex = 1; this.button_exportResults.UseVisualStyleBackColor = true; this.button_exportResults.Click += new System.EventHandler(this.button_exportResults_Click); // // button_generateReport // this.button_generateReport.Location = new System.Drawing.Point(29, 34); this.button_generateReport.Name = "button_generateReport"; this.button_generateReport.Size = new System.Drawing.Size(75, 23); this.button_generateReport.TabIndex = 0; this.button_generateReport.UseVisualStyleBackColor = true; this.button_generateReport.Click += new System.EventHandler(this.button_generateReport_Click); // // groupBox6groupBox_analysisResult2 // this.groupBox6groupBox_analysisResult2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.groupBox6groupBox_analysisResult2.Controls.Add(this.dataGridView_Total); this.groupBox6groupBox_analysisResult2.Controls.Add(this.dataGridView2); this.groupBox6groupBox_analysisResult2.Location = new System.Drawing.Point(242, 592); this.groupBox6groupBox_analysisResult2.Name = "groupBox6groupBox_analysisResult2"; this.groupBox6groupBox_analysisResult2.Size = new System.Drawing.Size(719, 218); this.groupBox6groupBox_analysisResult2.TabIndex = 32; this.groupBox6groupBox_analysisResult2.TabStop = false; // // dataGridView_Total // this.dataGridView_Total.AllowUserToAddRows = false; this.dataGridView_Total.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.dataGridView_Total.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill; this.dataGridView_Total.BackgroundColor = System.Drawing.SystemColors.ControlLightLight; dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; dataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Control; dataGridViewCellStyle1.Font = new System.Drawing.Font("宋体", 9F); dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.WindowText; dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight; dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText; dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.True; this.dataGridView_Total.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle1; this.dataGridView_Total.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; this.dataGridView_Total.Location = new System.Drawing.Point(13, 144); this.dataGridView_Total.Name = "dataGridView_Total"; this.dataGridView_Total.ReadOnly = true; this.dataGridView_Total.RowHeadersVisible = false; this.dataGridView_Total.RowTemplate.Height = 23; this.dataGridView_Total.Size = new System.Drawing.Size(693, 68); this.dataGridView_Total.TabIndex = 17; // // dataGridView2 // this.dataGridView2.AllowUserToAddRows = false; this.dataGridView2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.dataGridView2.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill; this.dataGridView2.BackgroundColor = System.Drawing.SystemColors.ControlLightLight; dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; dataGridViewCellStyle2.BackColor = System.Drawing.SystemColors.Control; dataGridViewCellStyle2.Font = new System.Drawing.Font("宋体", 9F); dataGridViewCellStyle2.ForeColor = System.Drawing.SystemColors.WindowText; dataGridViewCellStyle2.SelectionBackColor = System.Drawing.SystemColors.Highlight; dataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.HighlightText; dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.True; this.dataGridView2.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle2; this.dataGridView2.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; this.dataGridView2.Location = new System.Drawing.Point(13, 12); this.dataGridView2.Name = "dataGridView2"; this.dataGridView2.ReadOnly = true; this.dataGridView2.RowHeadersVisible = false; this.dataGridView2.RowTemplate.Height = 23; this.dataGridView2.Size = new System.Drawing.Size(693, 128); this.dataGridView2.TabIndex = 16; // // groupBox_analysisResult1 // this.groupBox_analysisResult1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.groupBox_analysisResult1.Controls.Add(this.button11); this.groupBox_analysisResult1.Controls.Add(this.listView2); this.groupBox_analysisResult1.Controls.Add(this.button16); this.groupBox_analysisResult1.Controls.Add(this.button12); this.groupBox_analysisResult1.Location = new System.Drawing.Point(12, 592); this.groupBox_analysisResult1.Name = "groupBox_analysisResult1"; this.groupBox_analysisResult1.Size = new System.Drawing.Size(224, 218); this.groupBox_analysisResult1.TabIndex = 31; this.groupBox_analysisResult1.TabStop = false; // // button11 // this.button11.BackColor = System.Drawing.SystemColors.Control; this.button11.Location = new System.Drawing.Point(19, 22); this.button11.Name = "button11"; this.button11.Size = new System.Drawing.Size(63, 26); this.button11.TabIndex = 27; this.button11.UseVisualStyleBackColor = false; this.button11.Click += new System.EventHandler(this.button11_Click); // // listView2 // this.listView2.FullRowSelect = true; this.listView2.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None; this.listView2.HideSelection = false; this.listView2.Location = new System.Drawing.Point(19, 58); this.listView2.Name = "listView2"; this.listView2.Size = new System.Drawing.Size(182, 149); this.listView2.TabIndex = 26; this.listView2.UseCompatibleStateImageBehavior = false; this.listView2.SelectedIndexChanged += new System.EventHandler(this.listview2_SelectedIndexChanged); // // button16 // this.button16.BackColor = System.Drawing.SystemColors.Control; this.button16.Location = new System.Drawing.Point(19, 21); this.button16.Name = "button16"; this.button16.Size = new System.Drawing.Size(93, 26); this.button16.TabIndex = 25; this.button16.UseVisualStyleBackColor = false; this.button16.Click += new System.EventHandler(this.button16_Click); // // button12 // this.button12.BackColor = System.Drawing.SystemColors.Control; this.button12.Location = new System.Drawing.Point(149, 21); this.button12.Name = "button12"; this.button12.Size = new System.Drawing.Size(52, 26); this.button12.TabIndex = 24; this.button12.UseVisualStyleBackColor = false; this.button12.Click += new System.EventHandler(this.button12_Click); // // NonFMetalsStandardDialog // this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); this.ClientSize = new System.Drawing.Size(1127, 822); this.Controls.Add(this.groupBox_report); this.Controls.Add(this.groupBox6groupBox_analysisResult2); this.Controls.Add(this.groupBox_analysisResult1); this.Controls.Add(this.groupBox_review); this.Controls.Add(this.groupBox_img); this.Controls.Add(this.groupBox_operating); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; this.Name = "NonFMetalsStandardDialog"; this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Dialog_FormClosing); this.Shown += new System.EventHandler(this.ShownChoiseItemAndInitData); this.Controls.SetChildIndex(this.groupBox_operating, 0); this.Controls.SetChildIndex(this.groupBox_img, 0); this.Controls.SetChildIndex(this.groupBox_review, 0); this.Controls.SetChildIndex(this.groupBox_analysisResult1, 0); this.Controls.SetChildIndex(this.groupBox6groupBox_analysisResult2, 0); this.Controls.SetChildIndex(this.groupBox_report, 0); this.groupBox_operating.ResumeLayout(false); this.groupBox_operating.PerformLayout(); this.groupBox_img.ResumeLayout(false); this.groupBox_report.ResumeLayout(false); this.groupBox_report.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDown1_0)).EndInit(); this.groupBox6groupBox_analysisResult2.ResumeLayout(false); ((System.ComponentModel.ISupportInitialize)(this.dataGridView_Total)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.dataGridView2)).EndInit(); this.groupBox_analysisResult1.ResumeLayout(false); this.ResumeLayout(false); } int index = -1; public void Initialize() { //初始化图片列表 for (int i = 0; i < this.appWorkspace.DocumentWorkspaces.Length; i++) { this.imageList_img.Images.Add("img" + i, this.appWorkspace.DocumentWorkspaces[i].CompositionSurface.Thumbnail);//.CreateAliasedBitmap() this.lstView_img.Items.Add("", i); this.lstView_img.Items[i].ImageIndex = i; this.lstView_img.Items[i].Text = this.appWorkspace.DocumentWorkspaces[i].GetFriendlyName(); this.lstView_img.Items[i].Name = this.appWorkspace.DocumentWorkspaces[i].GetFriendlyName(); if (this.appWorkspace.DocumentWorkspaces[i].Equals(this.appWorkspace.ActiveDocumentWorkspace)) { index = i; } } // // 初始化选中的数据 // if (index > -1 && index < this.lstView_img.Items.Count) this.lstView_img.Items[index].Selected = true; //选中行 ////初始化图片列表 //for (int i = 0; i < this.appWorkspace.DocumentWorkspaces.Length; i++) //{ // this.imageList_img.Images.Add("img" + i, this.appWorkspace.DocumentWorkspaces[i].BinarizationThumbnail); // this.lstView_img.Items.Add("", i); // this.lstView_img.Items[i].ImageIndex = i; // this.lstView_img.Items[i].Text = this.appWorkspace.DocumentWorkspaces[i].GetFriendlyName(); // this.lstView_img.Items[i].Name = this.appWorkspace.DocumentWorkspaces[i].GetFriendlyName(); //} // //初始化图像控件 // this.documentWorkspace = new DocumentWorkspaceWindow(this.appWorkspace); this.documentWorkspace.Cursor = Cursors.Default; this.documentWorkspace.Dock = DockStyle.Fill; this.documentWorkspace.HookMouseEvents(); this.documentWorkspace.AuxiliaryLineEnabled = false; this.documentWorkspace.Visible = true; this.documentWorkspace.panel.MouseDown += OnMouseDown; this.documentWorkspace.panel.Paint += Panel_Paint; this.documentWorkspace.panel.MouseMove += onMouseMove; this.documentWorkspace.panel.MouseUp += onMouseUp; this.groupBox_review.Controls.Add(this.documentWorkspace); // //初始化操作按钮 // this.commonControlButtons = new CommonControlButtons(); this.commonControlButtons.Dock = DockStyle.Top; this.commonControlButtons.Height = 30; this.commonControlButtons.HideZoomToWindowAndActualSize(); 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); groupBox_review.Controls.Add(this.commonControlButtons); } #endregion #region 二值化相关方法 /// /// 参数改变时,重新处理图像 /// /// /// private void bClassBinaryImplFinishAction(object sender, EventArgs e) { this.documentWorkspace.Refresh(); } //二值化集成3 /// /// 添加参数改变的监听 /// /// /// private void NonFMetalsStandardDialog_Load(object sender, EventArgs e) { this.binaryClass.loadParams(); //this.lstView_img.Select(); } private bool bcBinaryChecked() { return bc != null && bc.BinaryChecked; } protected bool bcOriginChecked() { return bc != null && bc.OriginChecked; } /// /// 显示原图/原图+二值图 /// /// /// private void bcOriginCheckedChanged(object sender, EventArgs e) { if (!bcOriginChecked()) { if (bcBinaryChecked()) this.documentWorkspace.PhaseModels[0].choise = true; } else { this.documentWorkspace.PhaseModels[0].choise = false; } this.documentWorkspace.Refresh(); } #endregion #region 内部方法 /// /// PanelC的调色板颜色改变 /// /// /// protected virtual void gridColorChanged(object sender, EventArgs e) { Color color = this.colorsFormGrid.UserPrimaryColor.ToColor(); //更改背景色,触发事件 this.panelC.BackColor = color; this.documentWorkspace.Refresh(); //关闭色板 this.colorsFormGrid.Close(); } /// /// 设置按钮 /// /// /// private void button_setting_Click(object sender, EventArgs e) { string templateName = getTemplateName(); AnalyzeSettingDialog metallographicMethodSetDialog = new AnalyzeSettingDialog(this, templateName); if (metallographicMethodSetDialog.hasModule) { metallographicMethodSetDialog.StartPosition = FormStartPosition.CenterScreen; metallographicMethodSetDialog.ShowDialog(); } else { metallographicMethodSetDialog = null; } } private void btn_saveresult_Click(object sender, EventArgs e) { buildListBox_analysisResult(); } private void lstView_img_SelectedIndexChanged(object sender, EventArgs e) { if (this.lstView_img.FocusedItem != null && this.lstView_img.FocusedItem.Selected) { if (this.selectPicture == this.lstView_img.FocusedItem.Index) return; this.bitmap = this.appWorkspace.DocumentWorkspaces[this.lstView_img.FocusedItem.Index].CompositionSurface.CreateAliasedBitmap(); if (this.selectPicture >= 0 && this.selectPicture < this.imageList_img.Images.Keys.Count) binaryClass.saveMat(this.imageList_img.Images.Keys[this.selectPicture]); //二值化集成4 binaryClass.listView1_SelectedIndexChanged(this.bitmap, getCurrentWorkTag()); bool existViewFlag = this.appWorkspace.DocumentWorkspaces[this.lstView_img.FocusedItem.Index].GraphicsList.IsExsitView(); if (!existViewFlag) { matOrg = OpenCvSharp.Extensions.BitmapConverter.ToMat(bitmap); } else { matOrg = OpenCvSharp.Extensions.BitmapConverter.ToMat(this.appWorkspace.DocumentWorkspaces[this.lstView_img.FocusedItem.Index].GetFullSizeWithRegion()); } this.selectPicture = this.lstView_img.FocusedItem.Index; //this.loctation = new PointF(this.documentWorkspace.CompositionSurface.Width / 2, this.documentWorkspace.CompositionSurface.Height / 2); //AddRectangleToRectangleFCaps(); this.documentWorkspace.Refresh(); calculate1d = false; refreshWhileImgChanged(); bool BinaryChecked = false; if (getCurrentWorkTag() != null) BinaryChecked = (binaryClass.getModelMat(getCurrentWorkTag()) != null); //this.commonControlButtons.Visible = true;//0914###18449 this.documentWorkspace.Refresh(); } } /// /// 导出项目 /// /// /// private void button1_Click(object sender, EventArgs e) { if (this.listView2.Items.Count == 0) { MessageBox.Show(PdnResources.GetString("Menu.Noresults.text")); return; } if (this.checkBox_generateReport_opensetting.Checked) this.button_setting.PerformClick(); if (this.analyzeSettingModel != null && !string.IsNullOrEmpty(this.analyzeSettingModel.analyzeClassify)) { //获取项目工程内的文件夹路径 ProjectEngineering.NodeItem nodeItem = this.appWorkspace.GetInsertProjectPath(2, getProjectEngineeringName(), this.analyzeSettingModel.savePath); if (nodeItem == null) return; //获取word书签与excel单元格的关系,以字典方式存储 List mic_module_infos = PaintDotNet.DbOpreate.DbBll.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 contentHeaderText = new List(); foreach (DataGridViewColumn c in this.dataGridView2.Columns) { contentHeaderText.Add(c.HeaderText); } analysisContent.Add(contentHeaderText); foreach (DataGridViewRow item in this.dataGridView2.Rows)//################################ { List content = new List(); for (int i = 0; i < contentHeaderText.Count; i++) { content.Add(item.Cells[i].Value.ToString()); } analysisContent.Add(content); } } { List contentHeaderText = new List(); foreach (DataGridViewColumn c in this.dataGridView_Total.Columns) { contentHeaderText.Add(c.HeaderText); } analysisContent.Add(contentHeaderText); foreach (DataGridViewRow item in this.dataGridView_Total.Rows) { List content = new List(); for (int i = 0; i < contentHeaderText.Count; i++) { content.Add(item.Cells[i].Value.ToString()); } analysisContent.Add(content); } } //图片 bitList = new List(); //中间数据 List exportModel = new List(); if (this.allShow) { foreach (KeyValuePair> kv in this.bitDic) { bitList.Add(kv.Value[0]); bitList.Add(kv.Value[1]); } //中间数据 foreach (ExportProjectModel model in this.tempDataModel) { ExportProjectModel tempModel = new ExportProjectModel(); tempModel.tagName = model.tagName; tempModel.picName = model.picName; tempModel.dataList = model.dataList; exportModel.Add(tempModel); } } else { if (this.listView2.SelectedItems != null && this.listView2.SelectedItems.Count > 0) { foreach (ListViewItem item in this.listView2.SelectedItems) { if (bitDic.ContainsKey(item.Name)) { bitList.Add(bitDic[item.Name][0]); bitList.Add(bitDic[item.Name][1]); } else if (bitDic.ContainsKey(item.Tag.ToString())) { bitList.Add(bitDic[item.Tag.ToString()][0]); bitList.Add(bitDic[item.Tag.ToString()][1]); } } //中间数据 foreach (ListViewItem rowItem in this.listView2.SelectedItems) { foreach (ExportProjectModel model in this.tempDataModel) { if (model.tagName.Equals(rowItem.Name)) { ExportProjectModel tempModel = new ExportProjectModel(); tempModel.tagName = model.tagName; tempModel.picName = model.picName; tempModel.dataList = model.dataList; exportModel.Add(tempModel); break; } else if (model.tagName.Equals(rowItem.Tag.ToString())) { ExportProjectModel tempModel = new ExportProjectModel(); tempModel.tagName = model.tagName; tempModel.picName = model.picName; tempModel.dataList = model.dataList; exportModel.Add(tempModel); break; } } } } else if (this.listView2.Items.Count > 0) { ListViewItem rowItem = this.listView2.Items[0]; if (bitDic.ContainsKey(rowItem.Name)) { bitList.Add(bitDic[rowItem.Name][0]); bitList.Add(bitDic[rowItem.Name][1]); } else if (bitDic.ContainsKey(rowItem.Tag.ToString())) { bitList.Add(bitDic[rowItem.Tag.ToString()][0]); bitList.Add(bitDic[rowItem.Tag.ToString()][1]); } //中间数据 foreach (ExportProjectModel model in this.tempDataModel) { if (model.tagName.Equals(rowItem.Name)) { ExportProjectModel tempModel = new ExportProjectModel(); tempModel.tagName = model.tagName; tempModel.picName = model.picName; tempModel.dataList = model.dataList; exportModel.Add(tempModel); break; } else if (model.tagName.Equals(rowItem.Tag.ToString())) { ExportProjectModel tempModel = new ExportProjectModel(); tempModel.tagName = model.tagName; tempModel.picName = model.picName; tempModel.dataList = model.dataList; exportModel.Add(tempModel); break; } } } } this.appWorkspace.CreateAnalysisReport(this.analyzeSettingModel, analysisContent, exportModel, bitList, tagInfos, nodeItem.path, nodeItem.code); //保存项目信息到数据库 this.appWorkspace.InsertIntoDB(this.analyzeSettingModel, nodeItem); } else MessageBox.Show(PdnResources.GetString("Menu.Pleasesettheanalysisreportfirst.text")+"!"); } /// /// 导出结果 /// /// /// private void button_exportResults_Click(object sender, EventArgs e) { if (this.listView2.Items.Count > 0) { //for (int r = 0; r < this.dataGridView2.Rows.Count; r++) //{ // System.Data.DataRow dataRow = table1.NewRow(); // if (r == 0) // { // for (int c = 0; c < this.dataGridView2.Rows[r].Cells.Count; c++) // { // dataRow[this.dataGridView2.Columns[c].HeaderText] = this.dataGridView2.Columns[c].HeaderText; // } // table1.Rows.Add(dataRow); // } // dataRow = table1.NewRow(); // for (int c = 0; c < this.dataGridView2.Rows[r].Cells.Count; c++) // { // dataRow[this.dataGridView2.Columns[c].HeaderText] = this.dataGridView2.Rows[r].Cells[c].Value; // } // table1.Rows.Add(dataRow); //} //System.Data.DataTable table2 = new System.Data.DataTable(); //table2.TableName = PdnResources.GetString("Menu.statisaatics.text"); //foreach (DataGridViewColumn c in this.dataGridView_Total.Columns) //{ // table2.Columns.Add(c.HeaderText); //} //for (int r = 0; r < this.dataGridView_Total.Rows.Count; r++) //{ // System.Data.DataRow dataRow = table2.NewRow(); // if (r == 0) // { // for (int c = 0; c < this.dataGridView_Total.Rows[r].Cells.Count; c++) // { // dataRow[this.dataGridView_Total.Columns[c].HeaderText] = this.dataGridView_Total.Columns[c].HeaderText; // } // table2.Rows.Add(dataRow); // } // dataRow = table2.NewRow(); // for (int c = 0; c < this.dataGridView_Total.Rows[r].Cells.Count; c++) // { // dataRow[this.dataGridView_Total.Columns[c].HeaderText] = this.dataGridView_Total.Rows[r].Cells[c].Value; // } // table2.Rows.Add(dataRow); //} //if (table1.Rows.Count > 0) ds.Tables.Add(table1); //if (table2.Rows.Count > 0) ds.Tables.Add(table2); //if (ds.Tables.Count > 0) // DataToExcle(ds); } else { MessageBox.Show(PdnResources.GetString("Menu.Noanalysisresults.text")+"!"); return; } if (this.listView2.Items.Count > 0) { List list = new List(); System.Data.DataTable table1 = new System.Data.DataTable(); table1.TableName = PdnResources.GetString("Menu.breakdown.text"); foreach (DataGridViewColumn c in this.dataGridView2.Columns) { table1.Columns.Add(/*HeaderTextUsable ? */c.HeaderText/* : c.Name*/); } for (int r = 0; r < this.dataGridView2.Rows.Count; r++) { System.Data.DataRow dataRow = table1.NewRow(); if (r == 0) { for (int c = 0; c < this.dataGridView2.Rows[r].Cells.Count; c++) { dataRow[/*HeaderTextUsable ? */this.dataGridView2.Columns[c].HeaderText/* : this.dataGridView2.Columns[c].Name*/] = this.dataGridView2.Columns[c].HeaderText; } table1.Rows.Add(dataRow); } dataRow = table1.NewRow(); for (int c = 0; c < this.dataGridView2.Rows[r].Cells.Count; c++) { dataRow[/*HeaderTextUsable ? */this.dataGridView2.Columns[c].HeaderText/* : this.dataGridView2.Columns[c].Name*/] = this.dataGridView2.Rows[r].Cells[c].Value; } table1.Rows.Add(dataRow); } System.Data.DataTable table2 = new System.Data.DataTable(); table2.TableName = PdnResources.GetString("Menu.statisaatics.text"); foreach (DataGridViewColumn c in this.dataGridView_Total.Columns) { table2.Columns.Add(/*HeaderTextUsable ? */c.HeaderText/* : c.Name*/); } for (int r = 0; r < this.dataGridView_Total.Rows.Count; r++) { System.Data.DataRow dataRow = table2.NewRow(); if (r == 0) { for (int c = 0; c < this.dataGridView_Total.Rows[r].Cells.Count; c++) { dataRow[/*HeaderTextUsable ? */this.dataGridView_Total.Columns[c].HeaderText/* : this.dataGridView_Total.Columns[c].Name*/] = this.dataGridView_Total.Columns[c].HeaderText; } table2.Rows.Add(dataRow); } dataRow = table2.NewRow(); for (int c = 0; c < this.dataGridView_Total.Rows[r].Cells.Count; c++) { dataRow[/*HeaderTextUsable ? */this.dataGridView_Total.Columns[c].HeaderText/* : this.dataGridView_Total.Columns[c].Name*/] = this.dataGridView_Total.Rows[r].Cells[c].Value; } table2.Rows.Add(dataRow); } if (table1.Rows.Count > 0) list.Add(table1); if (table2.Rows.Count > 0) list/*ds.Tables*/.Add(table2); //if (table1.Rows.Count > 0) ds.Tables.Add(table1); //if (table2.Rows.Count > 0) ds.Tables.Add(table2); //if (ds.Tables.Count > 0) // DataToExcle(ds); if (list.Count == 0) { MessageBox.Show(PdnResources.GetString("Menu.Nonedata.Text") + "!"); return; } SaveFileDialog saveFileDialog = new SaveFileDialog(); saveFileDialog.DefaultExt = "xlsx"; saveFileDialog.Title = PdnResources.GetString("Menu.ExportdatatoEXECLtable.Text"); saveFileDialog.FileName = this.Text + PdnResources.GetString("Menu.Analysisresult.text") + DateTime.Now.ToString("yyyyMMddhhmmss"); saveFileDialog.Filter = "microsoft office execl files (*.xlsx)|*.xlsx"; saveFileDialog.RestoreDirectory = true; if (saveFileDialog.ShowDialog() == DialogResult.OK) this.appWorkspace.ExportDataToExcelWithProgress(list, saveFileDialog.FileName, true/*HeaderTextUsable*/, false, true); } else MessageBox.Show(PdnResources.GetString("Menu.Noanalysisresults.text") + "!"); } /// /// 画布绘制 /// /// /// private void Panel_Paint(object sender, PaintEventArgs e) { if (this.documentWorkspace.CompositionSurface != null) { // // 以下是计算绘制图片的位置和大小并绘制图片 // System.Drawing.Rectangle rc = this.documentWorkspace.panel.ClientRectangle; int width = (int)(this.documentWorkspace.CompositionSurface.Width * this.documentWorkspace.ScaleFactor.Ratio); int height = (int)(this.documentWorkspace.CompositionSurface.Height * this.documentWorkspace.ScaleFactor.Ratio); int x = (rc.Width < width) ? this.documentWorkspace.panel.AutoScrollPosition.X : (rc.Width - width) / 2; int y = (rc.Height < height) ? this.documentWorkspace.panel.AutoScrollPosition.Y : (rc.Height - height) / 2; // // 以下是绘制网格、标注、测量、视场等开始 // e.Graphics.TranslateTransform(x, y); e.Graphics.ScaleTransform((float)this.documentWorkspace.ScaleFactor.Ratio, (float)this.documentWorkspace.ScaleFactor.Ratio); Draw(e.Graphics); e.Graphics.ScaleTransform(1 / (float)this.documentWorkspace.ScaleFactor.Ratio, 1 / (float)this.documentWorkspace.ScaleFactor.Ratio); e.Graphics.TranslateTransform(-x, -y); } } /// /// 绘制 /// private void Draw(Graphics graphics) { // 抗锯齿 graphics.SmoothingMode = SmoothingMode.AntiAlias; drawSubclass(graphics); } /// /// 取消全部显示 /// /// /// private void button16_Click(object sender, EventArgs e) { this.button11.Visible = true; this.button16.Visible = false; this.button11.Focus(); this.allShow = false; if (this.listView2.Items.Count <= 0 && this.listView2.SelectedItems.Count <= 0) return; RefreshDataGridView2(); //double value_1 = 0; //double small_l = 0; //this.dataGridView2.Rows.Clear(); //for (int i = 0; i < this.listView2.SelectedItems.Count; i++) //{ // System.Data.DataTable dataTable1 = new System.Data.DataTable(); // foreach (var dataTable in this.dataTables) // { // if (this.listView2.SelectedItems.Count > 0) // { // if (this.listView2.SelectedItems[i].Tag.Equals(dataTable.TableName)) // { // dataTable1 = dataTable; // DataGridViewRow dgvr = new DataGridViewRow(); // foreach (DataGridViewColumn Column in this.dataGridView2.Columns) // { // dgvr.Cells.Add(Column.CellTemplate.Clone() as DataGridViewCell); // } // for (int c = 0; c < dataTable1.Columns.Count; c++) // { // dgvr.Cells[c].Value = dataTable1.Rows[0][c].ToString(); // small_l += double.Parse(dataTable1.Rows[0][c].ToString()); // } // this.dataGridView2.Rows.Add(dgvr); // } // } // else // { // if (this.listView2.Items[0].Tag.Equals(dataTable.TableName)) // { // dataTable1 = dataTable; // DataGridViewRow dgvr = new DataGridViewRow(); // foreach (DataGridViewColumn Column in this.dataGridView2.Columns) // { // dgvr.Cells.Add(Column.CellTemplate.Clone() as DataGridViewCell); // } // for (int c = 0; c < dataTable1.Columns.Count; c++) // { // dgvr.Cells[c].Value = dataTable1.Rows[0][c].ToString(); // small_l += double.Parse(dataTable1.Rows[0][c].ToString()); // } // this.dataGridView2.Rows.Add(dgvr); // } // } // } //} //double grainNumber = 0; //this.dataGridView_Total.Rows.Clear(); //for (int i = 0; i < this.listView2.SelectedItems.Count; i++) //{ // System.Data.DataTable dataTable1 = new System.Data.DataTable(); // foreach (var dataTable in this.dataTable_Totals) // { // if (this.listView2.SelectedItems.Count > 0) // { // if (this.listView2.SelectedItems[i].Tag.Equals(dataTable.TableName)) // dataTable1 = dataTable; // } // else // { // if (this.listView2.Items[0].Tag.Equals(dataTable.TableName)) // dataTable1 = dataTable; // } // } // grainNumber += double.Parse(dataTable1.Rows[0][0].ToString()); //} //{ // DataGridViewRow dgvr = new DataGridViewRow(); // foreach (DataGridViewColumn Column in this.dataGridView_Total.Columns) // { // dgvr.Cells.Add(Column.CellTemplate.Clone() as DataGridViewCell); // } // dgvr.Cells[0].Value = (grainNumber).ToString(); // dgvr.Cells[1].Value = (small_l).ToString(); // small_l = small_l / value_1; // dgvr.Cells[2].Value = small_l.ToString(); // dgvr.Cells[3].Value = (-6.643856 * Math.Log10(small_l * 0.001) - 3.288).ToString(); // this.dataGridView_Total.Rows.Add(dgvr); //} ////## //this.RefreshDataGridView4(); } /// /// 切换分析结果 /// /// /// private void listview2_SelectedIndexChanged(object sender, EventArgs e) { if (!this.allShow) { RefreshDataGridView2(); //if (this.listView2.SelectedItems.Count <= 0) // return; //double value_1 = 0; //double small_l = 0; //this.dataGridView2.Rows.Clear(); //for (int i = 0; i < this.listView2.SelectedItems.Count; i++) //{ // System.Data.DataTable dataTable1 = new System.Data.DataTable(); // foreach (var dataTable in this.dataTables) // { // if (this.listView2.SelectedItems[i].Tag.Equals(dataTable.TableName)) // { // dataTable1 = dataTable; // DataGridViewRow dgvr = new DataGridViewRow(); // foreach (DataGridViewColumn Column in this.dataGridView2.Columns) // { // dgvr.Cells.Add(Column.CellTemplate.Clone() as DataGridViewCell); // } // for (int c = 0; c < dataTable1.Columns.Count; c++) // { // dgvr.Cells[c].Value = dataTable1.Rows[0][c].ToString(); // small_l += double.Parse(dataTable1.Rows[0][c].ToString()); // } // this.dataGridView2.Rows.Add(dgvr); // } // } //} //double grainNumber = 0; //this.dataGridView_Total.Rows.Clear(); //for (int i = 0; i < this.listView2.SelectedItems.Count; i++) //{ // System.Data.DataTable dataTable1 = new System.Data.DataTable(); // foreach (var dataTable in this.dataTable_Totals) // { // if (this.listView2.SelectedItems[i].Tag.Equals(dataTable.TableName)) // dataTable1 = dataTable; // } // grainNumber += double.Parse(dataTable1.Rows[0][0].ToString()); //} //{ // DataGridViewRow dgvr = new DataGridViewRow(); // foreach (DataGridViewColumn Column in this.dataGridView_Total.Columns) // { // dgvr.Cells.Add(Column.CellTemplate.Clone() as DataGridViewCell); // } // dgvr.Cells[0].Value = (grainNumber).ToString(); // dgvr.Cells[1].Value = (small_l).ToString(); // small_l = small_l / value_1; // dgvr.Cells[2].Value = small_l.ToString(); // dgvr.Cells[3].Value = (-6.643856 * Math.Log10(small_l * 0.001) - 3.288).ToString(); // this.dataGridView_Total.Rows.Add(dgvr); //} ////## //this.RefreshDataGridView4(); } } /// /// 全部显示 /// /// /// private void button11_Click(object sender, EventArgs e) { //if (this.button6.Text == PdnResources.GetString("Menu.Showall.text")) //{ // this.button6.Text = PdnResources.GetString("Menu.Cancelshowall.text"); // this.showAll = true; // RefreshDataGridView2(); //} //else if (this.button6.Text == PdnResources.GetString("Menu.Cancelshowall.text")) //{ // this.button6.Text = PdnResources.GetString("Menu.Showall.text"); // this.showAll = false; // RefreshDataGridView2(); //} if (this.listView2.Items.Count > 0) { this.button11.Visible = false; this.button16.Visible = true; this.button16.Focus(); this.allShow = true; RefreshDataGridView2(); //double value_1 = 0; //double small_l = 0; //this.dataGridView2.Rows.Clear(); //for (int i = 0; i < this.dataTables.Count; i++) //{ // DataGridViewRow dgvr = new DataGridViewRow(); // foreach (DataGridViewColumn Column in this.dataGridView2.Columns) // { // dgvr.Cells.Add(Column.CellTemplate.Clone() as DataGridViewCell); // } // for (int c = 0; c < this.dataTables[i].Columns.Count; c++) // { // dgvr.Cells[c].Value = this.dataTables[i].Rows[0][c].ToString(); // small_l += double.Parse(this.dataTables[i].Rows[0][c].ToString()); // } // this.dataGridView2.Rows.Add(dgvr); //} //double grainNumber = 0; //this.dataGridView_Total.Rows.Clear(); //for (int i = 0; i < this.dataTable_Totals.Count; i++) //{ // grainNumber += double.Parse(this.dataTable_Totals[i].Rows[0][0].ToString()); //} //{ // DataGridViewRow dgvr = new DataGridViewRow(); // foreach (DataGridViewColumn Column in this.dataGridView_Total.Columns) // { // dgvr.Cells.Add(Column.CellTemplate.Clone() as DataGridViewCell); // } // dgvr.Cells[0].Value = (grainNumber).ToString(); // dgvr.Cells[1].Value = (small_l).ToString(); // small_l = small_l / value_1; // dgvr.Cells[2].Value = small_l.ToString(); // dgvr.Cells[3].Value = (-6.643856 * Math.Log10(small_l * 0.001) - 3.288).ToString(); // this.dataGridView_Total.Rows.Add(dgvr); //} //this.RefreshDataGridView4(); } else { MessageBox.Show(PdnResources.GetString("Menu.nodata.text")+"!"); } } /// /// 分析结果删除 /// /// /// private void button12_Click(object sender, EventArgs e) { if (this.listView2.Items.Count > 0) { if (this.listView2.SelectedItems.Count > 0) { DialogResult dr = MessageBox.Show(PdnResources.GetString("Menu.Areyousuretcteddata.text")+"?", PdnResources.GetString("Menu.hint.text"), MessageBoxButtons.OKCancel, MessageBoxIcon.Question); if (dr == DialogResult.OK) { if (this.listView2.SelectedItems.Count <= 0) return; for (int i = this.listView2.SelectedItems.Count - 1; i >= 0; i--) { int selectIndex = this.listView2.SelectedItems[i].Index; foreach (var dataTable in this.dataTable_Totals) { if (dataTable.TableName.Equals(this.listView2.SelectedItems[i].Tag)) { this.dataTable_Totals.Remove(dataTable); break; } } foreach (DataTable dt in resultTableList) { if (dt.TableName.Equals(this.listView2.SelectedItems[i].Tag)) { resultTableList.Remove(dt); break; } } for (int dataTableI = dataTables.Count - 1; dataTableI >= 0; dataTableI--) { System.Data.DataTable dataTable1 = dataTables[dataTableI]; if (dataTable1.TableName.Equals(this.listView2.SelectedItems[i].Tag/*tag*/)) dataTables.RemoveAt(dataTableI); } if (bitDic.ContainsKey((string)this.listView2.SelectedItems[i].Tag)) bitDic.Remove((string)this.listView2.SelectedItems[i].Tag); foreach (ExportProjectModel model in this.tempDataModel) { if (model.tagName.Equals((string)this.listView2.SelectedItems[i].Tag)) { this.tempDataModel.Remove(model); break; } } this.listView2.Items.RemoveAt(selectIndex); } if (this.listView2.Items.Count == 0) { this.dataGridView_Total.Rows.Clear(); this.dataGridView2.Rows.Clear(); } else RefreshDataGridView2(); //RefreshDataGridView4(); } } else { MessageBox.Show(PdnResources.GetString("Menu.Pleaseselectthedatatobedeleted.text")+"!"); } } else { MessageBox.Show(PdnResources.GetString("Menu.nodata.text")+"!"); } } /// /// 小数位数 /// /// /// private void numericUpDown1_0_ValueChanged(object sender, EventArgs e) { if (this.numericUpDown1_0.Value > this.numericUpDown1_0.Maximum) this.numericUpDown1_0.Value = this.numericUpDown1_0.Maximum; if (this.numericUpDown1_0.Value < this.numericUpDown1_0.Minimum) this.numericUpDown1_0.Value = this.numericUpDown1_0.Minimum; RefreshDataGridView1(); RefreshDataGridView2(); } /// /// 生成报告 /// /// /// private void button_generateReport_Click(object sender, EventArgs e) { //if (this.listView2.Items.Count == 0) //{ // MessageBox.Show(PdnResources.GetString("Menu.Noresults.text")); // return; //} //if (this.checkBox_generateReport_opensetting.Checked) // this.button_setting.PerformClick(); if (this.analyzeSettingModel != null && !string.IsNullOrEmpty(this.analyzeSettingModel.analyzeClassify)) { ////获取word书签与excel单元格的关系,以字典方式存储 //List mic_module_infos = PaintDotNet.DbOpreate.DbBll.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 contentHeaderText = new List(); //foreach (DataGridViewColumn c in this.dataGridView2.Columns) //{ // contentHeaderText.Add(c.HeaderText); //} //analysisContent.Add(contentHeaderText); //foreach (DataGridViewRow item in this.dataGridView2.Rows)//########################## //{ // List content = new List(); // for (int i = 0; i < contentHeaderText.Count; i++) // { // content.Add(item.Cells[i].Value.ToString()); // } // analysisContent.Add(content); //} ////图片 //bitList = new List(); //if (this.allShow) //{ // foreach (KeyValuePair> kv in this.bitDic) // { // bitList.Add(kv.Value[0]); // bitList.Add(kv.Value[1]); // } //} //else //{ // if (this.listView2.SelectedItems != null && this.listView2.SelectedItems.Count > 0) // { // foreach (ListViewItem item in this.listView2.SelectedItems) // { // if (bitDic.ContainsKey(item.Name)) // { // bitList.Add(bitDic[item.Name][0]); // bitList.Add(bitDic[item.Name][1]); // } // else if (bitDic.ContainsKey(item.Tag.ToString())) // { // bitList.Add(bitDic[item.Tag.ToString()][0]); // bitList.Add(bitDic[item.Tag.ToString()][1]); // } // } // } // else if (this.listView2.Items.Count > 0) // { // ListViewItem item = this.listView2.Items[0]; // if (bitDic.ContainsKey(item.Name)) // { // bitList.Add(bitDic[item.Name][0]); // bitList.Add(bitDic[item.Name][1]); // } // else if (bitDic.ContainsKey(item.Tag.ToString())) // { // bitList.Add(bitDic[item.Tag.ToString()][0]); // bitList.Add(bitDic[item.Tag.ToString()][1]); // } // } //} //this.appWorkspace.CreateAnalysisReport(this.analyzeSettingModel, analysisContent, bitList, tagInfos); } //else // MessageBox.Show(PdnResources.GetString("Menu.Pleasesettheanalysisreportfirst.text")+"!"); if (this.listView2.Items.Count == 0) { MessageBox.Show(PdnResources.GetString("Menu.Noresults.text")); return; } if (this.checkBox_generateReport_opensetting.Checked) this.button_setting.PerformClick(); if (this.analyzeSettingModel != null && !string.IsNullOrEmpty(this.analyzeSettingModel.analyzeClassify)) { //获取word书签与excel单元格的关系,以字典方式存储 List mic_module_infos = PaintDotNet.DbOpreate.DbBll.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 contentHeaderText = new List(); foreach (DataGridViewColumn c in this.dataGridView2.Columns) { contentHeaderText.Add(c.HeaderText); } analysisContent.Add(contentHeaderText); foreach (DataGridViewRow item in this.dataGridView2.Rows)//########################## { List content = new List(); for (int i = 0; i < contentHeaderText.Count; i++) { content.Add(item.Cells[i].Value.ToString()); } analysisContent.Add(content); } List contentHeaderText2 = new List(); foreach (DataGridViewColumn c in this.dataGridView_Total.Columns) { contentHeaderText2.Add(c.HeaderText); } analysisContent.Add(contentHeaderText2); foreach (DataGridViewRow item in this.dataGridView_Total.Rows)//########################## { List content = new List(); for (int i = 0; i < contentHeaderText2.Count; i++) { content.Add(item.Cells[i].Value.ToString()); } analysisContent.Add(content); } //图片 bitList = new List(); if (this.allShow) { foreach (KeyValuePair> kv in this.bitDic) { bitList.Add(kv.Value[0]); bitList.Add(kv.Value[1]); } } else { if (this.listView2.SelectedItems != null && this.listView2.SelectedItems.Count > 0) { foreach (ListViewItem item in this.listView2.SelectedItems) { if (bitDic.ContainsKey(item.Name)) { bitList.Add(bitDic[item.Name][0]); bitList.Add(bitDic[item.Name][1]); } else if (bitDic.ContainsKey(item.Tag.ToString())) { bitList.Add(bitDic[item.Tag.ToString()][0]); bitList.Add(bitDic[item.Tag.ToString()][1]); } } } else if (this.listView2.Items.Count > 0) { ListViewItem item = this.listView2.Items[0]; if (bitDic.ContainsKey(item.Name)) { bitList.Add(bitDic[item.Name][0]); bitList.Add(bitDic[item.Name][1]); } else if (bitDic.ContainsKey(item.Tag.ToString())) { bitList.Add(bitDic[item.Tag.ToString()][0]); bitList.Add(bitDic[item.Tag.ToString()][1]); } } } this.appWorkspace.CreateAnalysisReport(this.analyzeSettingModel, analysisContent, bitList, tagInfos); } else MessageBox.Show(PdnResources.GetString("Menu.Pleasesettheanalysisreportfirst.text") + "!"); } /// /// 导出多 Sheet 报表 /// /// 要导出的数据 public void DataToExcle(System.Data.DataSet ds) { try { if (ds.Tables == null || ds.Tables.Count == 0) { MessageBox.Show(PdnResources.GetString("Menu.Nonedata.Text")+"!"); return; } SaveFileDialog saveFileDialog = new SaveFileDialog(); saveFileDialog.DefaultExt = "xlsx"; saveFileDialog.Title = PdnResources.GetString("Menu.ExportdatatoEXECLtable.Text"); saveFileDialog.FileName = this.Text + PdnResources.GetString("Menu.Analysisresult.text") + DateTime.Now.ToString("yyyyMMddhhmmss"); saveFileDialog.Filter = "microsoft office execl files (*.xlsx)|*.xlsx"; saveFileDialog.RestoreDirectory = true; if (saveFileDialog.ShowDialog() == DialogResult.OK) { List list = new List(); foreach (System.Data.DataTable itemTable in ds.Tables) list.Add(itemTable); this.appWorkspace.ExportDataToExcelWithProgress(list, saveFileDialog.FileName, true, false, true); } } catch (Exception e) { throw e; } } /// /// 刷新分析结果表 /// private void RefreshDataGridView2() { this.dataGridView2.Rows.Clear(); double dValue; List totalValueList = new List(); for (int i = 0; i < this.dataGridView_Total.Columns.Count; i++) { totalValueList.Add(0.0); } int startFromIndex = 1; if (IndexChangedFromIndex.Count > 0) startFromIndex = IndexChangedFromIndex[0]; if (this.allShow) { foreach (DataTable dt in resultTableList) for (int i = 0; i < dt.Rows.Count; i++) { DataGridViewRow row = new DataGridViewRow(); row.Height = 30; for (int rowJ = 0; rowJ < startFromIndex; rowJ++) row.Cells.Add(CreateTextBoxCell(dt.Rows[i][rowJ].ToString(), "")); for (int rowJ = startFromIndex; rowJ < dt.Rows[i].ItemArray.Length; rowJ++) { row.Cells.Add(CreateTextBoxCell(this.resShow(dt.Rows[i][rowJ].ToString()), "")); if (double.TryParse(dt.Rows[i][rowJ].ToString(), out dValue)) totalValueList[rowJ - startFromIndex] = totalValueList[rowJ - startFromIndex] + dValue; } this.dataGridView2.Rows.Add(row); } } else { if (this.listView2.SelectedItems != null && this.listView2.SelectedItems.Count > 0) { for (int i = 0; i < this.listView2.SelectedItems.Count; i++) foreach (DataTable dt in resultTableList) if (dt.TableName.Equals((string)this.listView2.SelectedItems[i].Tag)) for (int j = 0; j < dt.Rows.Count; j++) { DataGridViewRow row = new DataGridViewRow(); row.Height = 30; for (int rowJ = 0; rowJ < startFromIndex; rowJ++) row.Cells.Add(CreateTextBoxCell(dt.Rows[i][rowJ].ToString(), "")); for (int rowJ = startFromIndex; rowJ < dt.Rows[j].ItemArray.Length; rowJ++) { row.Cells.Add(CreateTextBoxCell(this.resShow(dt.Rows[j][rowJ].ToString()), "")); if (double.TryParse(dt.Rows[j][rowJ].ToString(), out dValue)) totalValueList[rowJ - startFromIndex] = totalValueList[rowJ - startFromIndex] + dValue; } this.dataGridView2.Rows.Add(row); } } else if (this.listView2.Items.Count > 0) { string tableName = (string)this.listView2.Items[0].Tag; foreach (DataTable dt in resultTableList) if (dt.TableName.Equals(tableName)) for (int j = 0; j < dt.Rows.Count; j++) { DataGridViewRow row = new DataGridViewRow(); row.Height = 30; for (int rowJ = 0; rowJ < startFromIndex; rowJ++) row.Cells.Add(CreateTextBoxCell(dt.Rows[j][rowJ].ToString(), "")); for (int rowJ = startFromIndex; rowJ < dt.Rows[j].ItemArray.Length; rowJ++) { row.Cells.Add(CreateTextBoxCell(this.resShow(dt.Rows[j][rowJ].ToString()), "")); if (double.TryParse(dt.Rows[j][rowJ].ToString(), out dValue)) totalValueList[rowJ - startFromIndex] = totalValueList[rowJ - startFromIndex] + dValue; } this.dataGridView2.Rows.Add(row); } } } this.dataGridView_Total.Rows.Clear(); if (this.dataGridView2.Rows.Count > 0 && this.dataGridView_Total.Columns.Count == totalValueList.Count) { DataGridViewRow row = new DataGridViewRow(); row.Height = 30; for (int i = 0; i < this.dataGridView_Total.Columns.Count; i++) { row.Cells.Add(CreateTextBoxCell(this.resShow((totalValueList[i] / this.dataGridView2.Rows.Count).ToString()), "")); } this.dataGridView_Total.Rows.Add(row); } } #region 公共按钮 private void zoomInButton_Click(object sender, EventArgs e) { this.documentWorkspace.ZoomIn(); } private void zoomOutButton_Click(object sender, EventArgs e) { 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.InclusionNoEffect; } private void mobileModeButton_Click(object sender, EventArgs e) { this.documentWorkspace.ActiveTool = Annotation.Enum.DrawToolType.MoveMode; } #endregion #region 矩形拖动 /// /// 防止拖动鼠标与小手动作的冲突 /// /// protected bool CanUseMouseFunctions() {//#22071 return this.documentWorkspace.ActiveTool != Annotation.Enum.DrawToolType.MoveMode; } /// /// 鼠标按下 /// /// /// protected virtual void OnMouseDown(object sender, MouseEventArgs e) { //// 换算后的点 //PointF point1 = documentWorkspace.GetScalePoint(e.Location); } /// /// 移动 /// /// /// protected virtual void onMouseMove(object sender, MouseEventArgs e) { this.documentWorkspace.Refresh(); //// 换算后的点 //PointF point1 = documentWorkspace.GetScalePoint(e.Location); } /// /// 鼠标抬起 /// /// /// protected virtual void onMouseUp(object sender, MouseEventArgs e) { //m_canMove = false; } #endregion #endregion #region 可调用方法 /// /// 颜色点击事件 /// /// /// protected void panel1_Click(object sender, EventArgs e) { this.panelC = (Panel)sender; this.colorsFormGrid.UserPrimaryColor = ColorBgra.FromColor(this.panelC.BackColor); this.colorsFormGrid.ShowDialog(); } ///// ///// 是否能取到二值的结果 ///// ///// //protected Boolean getBinaryChecked() //{ // return (bcBinaryChecked() && this.documentWorkspace.PhaseModels[0].mat != null); //} /// /// 返回当前选择的图片内容 /// /// protected DocumentWorkspace getCurrentWorkspace() { return this.appWorkspace.DocumentWorkspaces[this.lstView_img.FocusedItem != null ? this.lstView_img.FocusedItem.Index : this.lstView_img.SelectedItems[0].Index]; } /// /// 返回当前选择的图片tag /// /// protected string getCurrentWorkTag() { return this.imageList_img.Images.Keys[this.lstView_img.FocusedItem != null ? this.lstView_img.FocusedItem.Index : lstView_img.SelectedItems[0].Index/*lstView_img.SelectedItems[0].Index*/]; } #endregion #region 需继承方法 /// /// 小数点位数变化时刷新界面的数据 /// protected virtual void RefreshDataGridView1() { } /// /// 图片索引改变后调用的事件 /// protected virtual void refreshWhileImgChanged() { } /// /// 计算结果是否存在 /// /// 返回是否可以计算和保存结果 protected virtual bool resultCalculateExist() { return false; } /// /// 计算结果 /// /// /// protected virtual void buttonCalculate_Click(object sender, EventArgs e) { } /// /// 点击保存结果按钮,用来返回需要新增的一行数据 /// /// /// /// protected virtual DataTable toInsertTableRow(string tag, string imgName) { DataTable dt = new DataTable(tag); return dt; } /// /// 保存结果 /// protected virtual void buildListBox_analysisResult() { if (this.matOrg == null) { MessageBox.Show(PdnResources.GetString("Menu.Pleaseselectapicture.text") + "!"); return; } string imgName = getCurrentWorkspace().GetFriendlyName(); string tag = getCurrentWorkTag(); bool replace = false; int rowIndex = 0; if (!resultCalculateExist()) { MessageBox.Show(PdnResources.GetString("Menu.Pleasedrawauxiliarylinesfirst.text")); return; } if (!calculate1d) { MessageBox.Show("请先计算结果"/*PdnResources.GetString("Menu.Pleasedrawthemeasuringlinefirst.text")*/); return; } if (this.listView2.Items.Count > 0) { foreach (ListViewItem item in this.listView2.Items) { if (item.Tag.Equals(tag)) { DialogResult dr = MessageBox.Show(PdnResources.GetString("Menu.Theanalysisreertoreplaceit.text") + "?", PdnResources.GetString("Menu.hint.text"), MessageBoxButtons.OKCancel, MessageBoxIcon.Question); if (dr == DialogResult.OK) { replace = true; } else { return; } break; } } } if (!replace) { ListViewItem listViewItem = new ListViewItem(); listViewItem.SubItems[0].Text = imgName; listViewItem.Tag = "" + tag; if (this.listView2.Items.Count == 0) this.listView2.Items.Add(listViewItem); else this.listView2.Items.Insert(0, listViewItem); } //有重名需要替换 if (replace) { for (int i = 0; i < this.resultTableList.Count; i++) { if (this.resultTableList[i].TableName.Equals(tag)) { rowIndex = i; this.resultTableList.Remove(this.resultTableList[i]); resultTableList.Insert(rowIndex, toInsertTableRow(tag, imgName)); } } } //新增 else resultTableList.Add(toInsertTableRow(tag, imgName)); RefreshDataGridView2(); //保存处理后的图片 double pantographRatio = this.appWorkspace.DocumentWorkspaces[this.selectPicture].GetRulerMultiple(MeasurementUnit.Micron);//标尺*放大倍数 List tempBit = new List(); Bitmap originalBit = this.bitmap;// 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); if (this.documentWorkspace.PhaseModels[0].choise && this.documentWorkspace.PhaseModels[0].mat != null) { Mat targetMat = this.documentWorkspace.PhaseModels[0].mat; graphics.DrawImage(OpenCvSharp.Extensions.BitmapConverter.ToBitmap(targetMat), 0, 0, targetMat.Width, targetMat.Height); } graphics.SmoothingMode = SmoothingMode.AntiAlias; drawSubclass/*Draw*/(graphics); newBit.Tag = pantographRatio; tempBit.Add(newBit); if (bitDic.ContainsKey(tag)) bitDic[tag] = tempBit; else bitDic.Add(tag, tempBit); //拼接中间数据 //--> bool isExist = false;//是否已存在进行替换 int modelIndex = -1;//要替换的下标 for (int j = 0; j < tempDataModel.Count; j++) { if (tempDataModel[j].tagName.Equals(tag)) { isExist = true; modelIndex = j; break; } } if (isExist && modelIndex > -1) { List> tempDataList = buildTempDataList(); if (tempDataList != null) tempDataModel[modelIndex].dataList = tempDataList; } else { ExportProjectModel newModel = new ExportProjectModel(); newModel.tagName = tag; newModel.picName = getCurrentWorkspace().GetFriendlyName(); List> tempDataList = buildTempDataList(); newModel.dataList = tempDataList; if (tempDataList != null) tempDataModel.Add(newModel); } //buildListBoxArea_analysisResult(); } /// /// 拼接中间数据 /// /// protected virtual List> buildTempDataList() { return null; //List> dataList = new List>(); //return dataList; } /// /// 添加内容单元格 /// /// /// /// protected DataGridViewTextBoxCell CreateTextBoxCell(string text, object tag) { DataGridViewTextBoxCell textboxcell = new DataGridViewTextBoxCell(); textboxcell.Value = text; textboxcell.Tag = tag; return textboxcell; } /// /// 小数位数格式化 //0916###18530 /// /// /// protected string resShow(string resValue) { if (string.IsNullOrEmpty(resValue)) { return "0"; } double dValue; if (!double.TryParse(resValue, out dValue)) { return resValue; } return Math.Round(dValue, Convert.ToInt32(this.numericUpDown1_0.Value)) + ""; } protected virtual void SubclassInitialize() { throw new NotImplementedException(); } /// /// 报告模板命名 /// /// protected virtual string getTemplateName() { throw new NotImplementedException(); } /// /// 项目工程内的文件夹路径名称 /// /// protected virtual string getProjectEngineeringName() { throw new NotImplementedException(); } protected virtual void drawSubclass(Graphics graphics) { ////显示辅助线 //if (showGridChecked()) // if (isAreaType) // guideClass.DrawAreaGuide(graphics, this.comboBox1.SelectedItem); // else // guideClass.DrawGuideLines(graphics, this.comboBox1.SelectedItem); ////显示截点 //if (drawGuidePoints()) // styleClass.DrawGuidePoints(graphics); } ///// ///// 刷新图形边线点集合 ///// //protected virtual void AddRectangleToRectangleFCaps() //{ // this.documentWorkspace.Refresh(); //} #endregion } }