using NewSegDll; using OpenCvSharp; using PaintDotNet.Adjust; using PaintDotNet.Annotation.Enum; using PaintDotNet.Base; using PaintDotNet.Base.Functionodel; using PaintDotNet.Binarization; using PaintDotNet.Data.Param; using PaintDotNet.Processing; using System; using System.Collections.Generic; using System.Drawing.Imaging; using System.Globalization; using System.Windows.Forms; namespace PaintDotNet.Menus { /// /// 二值操作 /// internal sealed class BinaryActionMenu : PdnMenuItem { private PdnMenuItem menuBinaryExtraction; private PdnMenuItem menuPhaseExtraction; private PdnMenuItem menuNsegExtraction; private ToolStripSeparator menuHelpSeparator1; private PdnMenuItem menuErosionExtraction; private PdnMenuItem menuDilationExtraction; private PdnMenuItem menuThickening; private PdnMenuItem menuThinning; private PdnMenuItem menuOpenExtraction; private PdnMenuItem menuCloseExtraction; private PdnMenuItem menuMorphologySegment; private PdnMenuItem menuWatershedSegment; private PdnMenuItem menuDebrisAction; private PdnMenuItem menuSkeletonAction; private PdnMenuItem menuHoleFilling; private PdnMenuItem menuHoleRemoval; private ToolStripSeparator menuHelpSeparator2; private PdnMenuItem menuObjectAction; private ToolStripSeparator menuHelpSeparator3; private PdnMenuItem menuSingleExtraction; private ToolStripSeparator menuHelpSeparator4; private PdnMenuItem menuLinearSegmentation; private ToolStripSeparator menuHelpSeparator5; private PdnMenuItem menuSingleDelete; private PdnMenuItem menuRectangleDelete; private PdnMenuItem menuPolygonleDelete; private ToolStripSeparator menuHelpSeparator6; private PdnMenuItem menuTrackAdd; private ToolStripSeparator menuHelpSeparator7; private PdnMenuItem menuContinuousOperation; // // 以下是非模态对话框 // //脚本管理窗口 private ObjectActionDialog objectActionDialog; public BinaryActionMenu(int menuId) { InitializeComponent(); this.MenuId = menuId; } protected override void OnAppWorkspaceChanged() { base.OnAppWorkspaceChanged(); } private void InitializeComponent() { this.menuBinaryExtraction = new PdnMenuItem(ActionType.ActionBinaryExtraction); this.menuPhaseExtraction = new PdnMenuItem(ActionType.ActionPhaseExtraction); this.menuNsegExtraction = new PdnMenuItem(ActionType.ActionBinaryExtraction); this.menuPhaseExtraction.AutomaticScript = false; this.menuHelpSeparator1 = new ToolStripSeparator(); this.menuErosionExtraction = new PdnMenuItem(ActionType.ActionErosion); this.menuDilationExtraction = new PdnMenuItem(ActionType.ActionDilation); this.menuThickening = new PdnMenuItem(ActionType.ActionThickening); this.menuThinning = new PdnMenuItem(ActionType.ActionThinning); this.menuOpenExtraction = new PdnMenuItem(ActionType.ActionOpenExtraction); this.menuCloseExtraction = new PdnMenuItem(ActionType.ActionCloseExtraction); this.menuMorphologySegment = new PdnMenuItem(ActionType.ActionMorphologySegment); this.menuWatershedSegment = new PdnMenuItem(ActionType.ActionWatershedSegment); this.menuDebrisAction = new PdnMenuItem(ActionType.ActionDebris); this.menuDebrisAction.AutomaticScript = false; this.menuSkeletonAction = new PdnMenuItem(ActionType.ActionSkeleton); this.menuSkeletonAction.AutomaticScript = false; this.menuHoleFilling = new PdnMenuItem(ActionType.ActionHoleFilling); this.menuHoleFilling.AutomaticScript = false; this.menuHoleRemoval = new PdnMenuItem(ActionType.ActionHoleRemoval); this.menuHoleRemoval.AutomaticScript = false; this.menuHelpSeparator2 = new ToolStripSeparator(); this.menuObjectAction = new PdnMenuItem(ActionType.ActionObject); this.menuHelpSeparator3 = new ToolStripSeparator(); this.menuSingleExtraction = new PdnMenuItem(ActionType.ActionSingleExtraction); this.menuHelpSeparator4 = new ToolStripSeparator(); this.menuLinearSegmentation = new PdnMenuItem(ActionType.ActionLinearSegmentation); this.menuHelpSeparator5 = new ToolStripSeparator(); this.menuSingleDelete = new PdnMenuItem(ActionType.ActionSingleDelete); this.menuRectangleDelete = new PdnMenuItem(ActionType.ActionRectangleDelete); this.menuPolygonleDelete = new PdnMenuItem(ActionType.ActionPolygonleDelete); this.menuHelpSeparator6 = new ToolStripSeparator(); this.menuTrackAdd = new PdnMenuItem(ActionType.ActionTrackAdd); this.menuHelpSeparator7 = new ToolStripSeparator(); this.menuContinuousOperation = new PdnMenuItem(ActionType.ActionContinuousOperation, true); this.menuContinuousOperation.CanUseInScript = false; this.menuContinuousOperation.AutomaticScript = false; // // 主菜单 // this.DropDownItems.AddRange(new ToolStripItem[] { this.menuBinaryExtraction, this.menuPhaseExtraction, this.menuNsegExtraction, this.menuHelpSeparator1, this.menuErosionExtraction, this.menuDilationExtraction, this.menuThickening, this.menuThinning, this.menuOpenExtraction, this.menuCloseExtraction, this.menuMorphologySegment, this.menuWatershedSegment, this.menuDebrisAction, this.menuSkeletonAction, this.menuHoleFilling, this.menuHoleRemoval, this.menuHelpSeparator2, this.menuObjectAction, this.menuHelpSeparator3, this.menuSingleExtraction, this.menuHelpSeparator4, this.menuLinearSegmentation, this.menuHelpSeparator5, this.menuSingleDelete, this.menuRectangleDelete, this.menuPolygonleDelete, this.menuHelpSeparator6, this.menuTrackAdd, this.menuHelpSeparator7, this.menuContinuousOperation }); this.Name = "Menu.BinaryAction"; this.Text = PdnResources.GetString("Menu.BinaryAction.Text"); // // 二值提取 // this.menuBinaryExtraction.Name = "BinaryExtraction"; this.menuBinaryExtraction.Click += new EventHandler(this.binaryExtraction_Click); // // 物相提取 // this.menuPhaseExtraction.Name = "PhaseExtraction"; this.menuPhaseExtraction.Click += new EventHandler(this.phaseExtraction_Click); // // 晶界重现 // this.menuNsegExtraction.Visible = Startup.showNsegExtraction; this.menuNsegExtraction.Name = "NsetExtraction"; this.menuNsegExtraction.Text = "晶界重现"; this.menuNsegExtraction.Click += new EventHandler(this.nsegExtraction_Click); // // 腐蚀 // this.menuErosionExtraction.Name = "ErosionExtraction"; this.menuErosionExtraction.Click += new EventHandler(this.erosionExtraction_Click); // // 膨胀 // this.menuDilationExtraction.Name = "DilationExtraction"; this.menuDilationExtraction.Click += new EventHandler(this.dilationExtraction_Click); // // 粗化 // this.menuThickening.Name = "Thickening"; this.menuThickening.Click += new EventHandler(this.menuThickening_Click); // // 细化 // this.menuThinning.Name = "Thinning"; this.menuThinning.Click += new EventHandler(this.menuThinning_Click); // // 开运算 // this.menuOpenExtraction.Name = "OpenExtraction"; this.menuOpenExtraction.Click += new EventHandler(this.menuOpenExtraction_Click); // // 闭运算 // this.menuCloseExtraction.Name = "CloseExtraction"; this.menuCloseExtraction.Click += new EventHandler(this.menuCloseExtraction_Click); // // 形态学分割 // this.menuMorphologySegment.Name = "MorphologySegment"; this.menuMorphologySegment.Click += new EventHandler(this.menuMorphologySegment_Click); // // 分水岭分割 // this.menuWatershedSegment.Name = "WatershedSegment"; this.menuWatershedSegment.Click += new EventHandler(this.menuWatershedSegment_Click); // // 去碎屑 // this.menuDebrisAction.Name = "DebrisAction"; this.menuDebrisAction.Click += new EventHandler(this.menuDebrisAction_Click); // // 抽骨架 // this.menuSkeletonAction.Name = "SkeletonAction"; this.menuSkeletonAction.Click += new EventHandler(this.menuSkeletonAction_Click); // // 孔洞填充 // this.menuHoleFilling.Name = "HoleFilling"; this.menuHoleFilling.Click += new EventHandler(this.menuHoleFilling_Click); // // 孔洞删除 // this.menuHoleRemoval.Name = "HoleRemoval"; this.menuHoleRemoval.Click += new EventHandler(this.menuHoleRemoval_Click); // // 对象处理 // this.menuObjectAction.Name = "ObjectAction"; this.menuObjectAction.NeedWaitKey = true; this.menuObjectAction.Click += new EventHandler(this.menuObjectAction_Click); // // 单个提取 // this.menuSingleExtraction.Name = "SingleExtraction"; this.menuSingleExtraction.NeedWaitKey = true; this.menuSingleExtraction.Click += new EventHandler(this.menuSingleExtraction_Click); // // 直线分割 // this.menuLinearSegmentation.Name = "LinearSegmentation"; this.menuLinearSegmentation.NeedWaitKey = true; this.menuLinearSegmentation.Click += new EventHandler(this.menuLinearSegmentation_Click); // // 单个删除 // this.menuSingleDelete.Name = "SingleDelete"; this.menuSingleDelete.NeedWaitKey = true; this.menuSingleDelete.Click += new EventHandler(this.menuSingleDelete_Click); // // 矩形删除 // this.menuRectangleDelete.Name = "RectangleDelete"; this.menuRectangleDelete.NeedWaitKey = true; this.menuRectangleDelete.Click += new EventHandler(this.menuRectangleDelete_Click); // // 多边形删除 // this.menuPolygonleDelete.Name = "PolygonleDelete"; this.menuPolygonleDelete.NeedWaitKey = true; this.menuPolygonleDelete.Click += new EventHandler(this.menuPolygonleDelete_Click); // // 轨迹添加 // this.menuTrackAdd.Name = "TrackAdd"; this.menuTrackAdd.NeedWaitKey = true; this.menuTrackAdd.Click += new EventHandler(this.menuTrackAdd_Click); // // 连续操作 // this.menuContinuousOperation.Name = "ContinuousOperation"; //this.menuContinuousOperation.NeedWaitKey = true; this.menuContinuousOperation.Click += new EventHandler(this.menuContinuousOperation_Click); // // 加载菜单的文字和icon // this.LoadNames(this.Name); this.LoadIcons(); } protected override void OnDropDownOpening(EventArgs e) { this.menuContinuousOperation.Checked = AppWorkspace.ActiveDocumentWorkspace != null ? AppWorkspace.ActiveDocumentWorkspace.ContinuousBinaryAction : false; base.OnDropDownOpening(e); } /// /// 二值提取 /// /// /// private void binaryExtraction_Click(object sender, EventArgs e) { if (AppWorkspace.ActiveDocumentWorkspace != null) new BinaryExtractDialog(AppWorkspace/*, ActionType.ActionBinaryExtraction*/, PdnResources.GetString("Menu.BinaryAction.BinaryExtraction.Text")/*;//待修改中文资源-scc备注 20191219*/,(PdnMenuItem)sender).ShowDialog(); } /// /// 物相提取 /// /// /// private void phaseExtraction_Click(object sender, EventArgs e) { if (AppWorkspace.ActiveDocumentWorkspace != null) { if (AppWorkspace.startScriptRecording) { AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List()); } new PhaseExtractDialog(AppWorkspace, PdnResources.GetString("Menu.BinaryAction.PhaseExtraction.Text")/*;//待修改中文资源-scc备注 20191219*/, this.MenuId).ShowDialog(); } } /// /// 晶界重现 /// /// /// private void nsegExtraction_Click(object sender, EventArgs e) { //string inputImageFile = @"C:\Users\win10SSD\Desktop\切片demo\阻抗圖片\晶界重现\微信图片_20210715161529.jpg";// 微信图片_20210715161509.jpg";// @"E:\工作目录\晶界重现\new-Seg-1-210713release\j1.JPG";// "D:\\j1.JPG"; Mat OrgImg = null;// = OpenCvSharp.Cv2.ImRead(inputImageFile); if (AppWorkspace.ActiveDocumentWorkspace != null) { OrgImg = AppWorkspace.ActiveDocumentWorkspace.CompositionSurface.CreatedAliasedMat().CvtColor(ColorConversionCodes.BGRA2BGR); } else return; Mat OutImg = new Mat(OrgImg.Rows, OrgImg.Cols, MatType.CV_8UC3, Scalar.All(0)); NewSeg NSeg = new NewSeg(); double[] adOutParam = new double[10]; adOutParam[0] = 3;//方法1原方法,方法2模拟软件方法 adOutParam[1] = 0;//默认为暗晶界,为2时为亮晶界 adOutParam[2] = 3;//尺度系数,默认为3 adOutParam[3] = 1;//晶界宽度系数,默认为1 adOutParam[4] = 0;//亮度调整,为0不调整,为1自动调整,为2整体调暗,为3整体调亮,为4线性调整 adOutParam[5] = 1;//adOutParam[4]为2或3时adOutParam[5]有意义,表示调整强度,必须大于1,等于1无变化 adOutParam[6] = 1;//adOutParam[4]为4时adOutParam[6]有意义,线性变换斜率。 adOutParam[7] = 0;//adOutParam[4]为4时adOutParam[7]有意义,线性变换截距。 adOutParam[8] = 0;//为2时表示边界必须细化 adOutParam[9] = 0;//为2时表示边界必须连接 NSeg.DoSeg(OrgImg, OutImg, adOutParam); } /// /// 腐蚀 /// /// /// private void erosionExtraction_Click(object sender, EventArgs e) { if (AppWorkspace.ActiveDocumentWorkspace != null) { List phases = this.AppWorkspace.ActiveDocumentWorkspace.PhaseModels.FindAll(a => a.choise == true && a.mat != null); if (phases.Count == 0) { MessageBox.Show(PdnResources.GetString("Menu.Pleaseselecphasetoprocess.Text")); return; } new NormalOperationDialog(AppWorkspace, ActionType.ActionErosion, PdnResources.GetString("Menu.Binaryoperation.corrosion.Binaryoperation-corrosion.text"),(PdnMenuItem)sender).ShowDialog(); } } /// /// 膨胀 /// /// /// private void dilationExtraction_Click(object sender, EventArgs e) { if (AppWorkspace.ActiveDocumentWorkspace != null) { List phases = this.AppWorkspace.ActiveDocumentWorkspace.PhaseModels.FindAll(a => a.choise == true && a.mat != null); if (phases.Count == 0) { MessageBox.Show(PdnResources.GetString("Menu.Pleaseselecphasetoprocess.Text")); return; } new NormalOperationDialog(AppWorkspace, ActionType.ActionDilation, PdnResources.GetString("Menu.Binaryoperation.dilation.Binaansion.text"), (PdnMenuItem)sender).ShowDialog(); } } /// /// 粗化 /// /// /// private void menuThickening_Click(object sender, EventArgs e) { if (AppWorkspace.ActiveDocumentWorkspace != null) { List phases = this.AppWorkspace.ActiveDocumentWorkspace.PhaseModels.FindAll(a => a.choise == true && a.mat != null); if (phases.Count > 0) { new NormalOperationDialog(AppWorkspace, ActionType.ActionThickening, PdnResources.GetString("Menu.Binaryoperation.coarsen.Binaryopersening.text"), (PdnMenuItem)sender).ShowDialog(); } else { MessageBox.Show(PdnResources.GetString("Menu.Pleaseselecphasetoprocess.Text")); } } } /// /// 细化 /// /// /// private void menuThinning_Click(object sender, EventArgs e) { if (AppWorkspace.ActiveDocumentWorkspace != null) { List phases = this.AppWorkspace.ActiveDocumentWorkspace.PhaseModels.FindAll(a => a.choise == true && a.mat != null); if (phases.Count > 0) { new NormalOperationDialog(AppWorkspace, ActionType.ActionThinning, PdnResources.GetString("Menu.Binaryoperation.thin.Binaryoperement.text"), (PdnMenuItem)sender).ShowDialog(); } else { MessageBox.Show(PdnResources.GetString("Menu.Pleaseselecphasetoprocess.Text")); } } } /// /// 开运算 /// /// /// private void menuOpenExtraction_Click(object sender, EventArgs e) { if (AppWorkspace.ActiveDocumentWorkspace != null) { List phases = this.AppWorkspace.ActiveDocumentWorkspace.PhaseModels.FindAll(a => a.choise == true && a.mat != null); if (phases.Count > 0) { new NormalOperationDialog(AppWorkspace, ActionType.ActionOpenExtraction, PdnResources.GetString("Menu.Binaryoperation.Openoperation.Binaryopereration.text"), (PdnMenuItem)sender).ShowDialog(); } else { MessageBox.Show(PdnResources.GetString("Menu.Pleaseselecphasetoprocess.Text")); } } } /// /// 闭运算 /// /// /// private void menuCloseExtraction_Click(object sender, EventArgs e) { if (AppWorkspace.ActiveDocumentWorkspace != null) { List phases = this.AppWorkspace.ActiveDocumentWorkspace.PhaseModels.FindAll(a => a.choise == true && a.mat != null); if (phases.Count > 0) { new NormalOperationDialog(AppWorkspace, ActionType.ActionCloseExtraction, PdnResources.GetString("Menu.Binaryoperation.Closedtion.Binaryoperoperation.text"), (PdnMenuItem)sender).ShowDialog(); } else { MessageBox.Show(PdnResources.GetString("Menu.Pleaseselecphasetoprocess.Text")); } } } /// /// 形态学分割 /// /// /// private void menuMorphologySegment_Click(object sender, EventArgs e) { if (AppWorkspace.ActiveDocumentWorkspace != null) { List phases = this.AppWorkspace.ActiveDocumentWorkspace.PhaseModels.FindAll(a => a.choise == true && a.mat != null); if (phases.Count == 0) { MessageBox.Show(PdnResources.GetString("Menu.Pleaseselecphasetoprocess.Text")); return; } new NormalOperationDialog(AppWorkspace, ActionType.ActionMorphologySegment, PdnResources.GetString("Menu.Binaryoperation.Morphologientation.Binaryoperatiogment.text"), (PdnMenuItem)sender).ShowDialog(); } } /// /// 分水岭分割 /// /// /// private void menuWatershedSegment_Click(object sender, EventArgs e) { if (AppWorkspace.ActiveDocumentWorkspace != null) { List phases = this.AppWorkspace.ActiveDocumentWorkspace.PhaseModels.FindAll(a => a.choise == true && a.mat != null); if (phases.Count == 0) { MessageBox.Show(PdnResources.GetString("Menu.Pleaseselecphasetoprocess.Text")); return; } if (AppWorkspace.startScriptRecording) { AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List()); } new NormalOperationDialog(AppWorkspace, ActionType.ActionWatershedSegment, PdnResources.GetString("Menu.Binaryoperation.watersheation.Binaryomentation.text"), (PdnMenuItem)sender).ShowDialog(); } } /// /// 去碎屑 /// /// /// private void menuDebrisAction_Click(object sender, EventArgs e) { if (AppWorkspace.ActiveDocumentWorkspace != null) { List phases = this.AppWorkspace.ActiveDocumentWorkspace.PhaseModels.FindAll(a => a.choise == true && a.mat != null); if (phases.Count > 0) { if (AppWorkspace.startScriptRecording) { AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List()); } new NormalOperationDialog(AppWorkspace, ActionType.ActionDebris, PdnResources.GetString("Menu.Binaryoperation.Removedebris.Binaryopedebris.text"), (PdnMenuItem)sender).ShowDialog(); } else { MessageBox.Show(PdnResources.GetString("Menu.Pleaseselecphasetoprocess.Text")); } } } /// /// 抽骨架 /// /// /// private void menuSkeletonAction_Click(object sender, EventArgs e) { if (AppWorkspace.ActiveDocumentWorkspace != null) { List phases = this.AppWorkspace.ActiveDocumentWorkspace.PhaseModels.FindAll(a => a.choise == true && a.mat != null); if (phases.Count > 0) { bool DetermineBinaryImageByHist = false; foreach (var item in phases) { //判断是否二值化图像 if (Adjust.BaseImage.BaseTools.DetermineBinaryImageByHist(item.mat)) { DetermineBinaryImageByHist = true; break; //MessageBox.Show("Please enter abinarization image"); //return mat; } } if (!DetermineBinaryImageByHist) { //MessageBox.Show(PdnResources.GetString("Menu.Pleaseselecphasetoprocess.Text")); MessageBox.Show("请选择有效的相进行处理"); return; } if (AppWorkspace.startScriptRecording) { AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List()); } new NormalOperationDialog(AppWorkspace, ActionType.ActionSkeleton, PdnResources.GetString("Menu.Binaryoperation.skeletonform.Binaryoperanextraction.text"), (PdnMenuItem)sender).ShowDialog(); } else { MessageBox.Show(PdnResources.GetString("Menu.Pleaseselecphasetoprocess.Text")); } } } /// /// 孔洞填充,直接操作相 /// 没有相就没有任何变化 /// /// /// private void menuHoleFilling_Click(object sender, EventArgs e) { if (AppWorkspace.ActiveDocumentWorkspace != null) { if (AppWorkspace.startScriptRecording) { AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List()); } List phases = this.AppWorkspace.ActiveDocumentWorkspace.PhaseModels.FindAll(a => a.choise == true && a.mat != null); if (phases.Count > 0) { foreach (PhaseModel phaseModel in phases) { phaseModel.mat = MorphologyIntent.HolesFill(phaseModel.mat, phaseModel.color); } AppWorkspace.ActiveDocumentWorkspace.Refresh();//HolesFill(); } else { MessageBox.Show(PdnResources.GetString("Menu.Pleaseselecphasetoprocess.Text")); } } } /// /// 孔洞删除 /// /// /// private void menuHoleRemoval_Click(object sender, EventArgs e) { if (AppWorkspace.ActiveDocumentWorkspace != null) { List phases = this.AppWorkspace.ActiveDocumentWorkspace.PhaseModels.FindAll(a => a.choise == true && a.mat != null); if (phases.Count > 0) { if (AppWorkspace.startScriptRecording) { AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List()); } new NormalOperationDialog(AppWorkspace, ActionType.ActionHoleRemoval, PdnResources.GetString("Menu.Binaryoperation.Holedelete.Binaryoperation.text"), (PdnMenuItem)sender).ShowDialog(); } else { MessageBox.Show(PdnResources.GetString("Menu.Pleaseselecphasetoprocess.Text")); } } } /// /// 对象处理 /// /// /// private void menuObjectAction_Click(object sender, EventArgs e) { if (AppWorkspace.ActiveDocumentWorkspace != null) { List phases = this.AppWorkspace.ActiveDocumentWorkspace.PhaseModels.FindAll(a => a.choise == true && a.mat != null); if (phases.Count == 0) { MessageBox.Show(PdnResources.GetString("Menu.Pleaseselecphasetoprocess.Text")); return; } if (AppWorkspace.startScriptRecording) { AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List()); } objectActionDialog = (ObjectActionDialog)Application.OpenForms["ObjectActionDialog"];//尝试获取已经弹出的窗口对象 FloatingFormMethod.ShowFloatForm(objectActionDialog, objectActionDialog == null ? new ObjectActionDialog(AppWorkspace, this.MenuId)/*没有弹出的窗口对象则创建*/ : null, AppWorkspace); //if (objectActionDialog == null) //{ // objectActionDialog = new ObjectActionDialog(AppWorkspace); // objectActionDialog.StartPosition = FormStartPosition.CenterScreen; // objectActionDialog.Show(); //} //else //{ // if (!objectActionDialog.IsDisposed) // { // objectActionDialog.WindowState = FormWindowState.Normal; // } // else // { // objectActionDialog = new ObjectActionDialog(AppWorkspace); // objectActionDialog.StartPosition = FormStartPosition.CenterScreen; // objectActionDialog.Show(); // } //} } } /// /// 单个提取 /// /// /// private void menuSingleExtraction_Click(object sender, EventArgs e) { if (AppWorkspace.ActiveDocumentWorkspace != null) { if (AppWorkspace.startScriptRecording) { AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List()); } AppWorkspace.ActiveDocumentWorkspace.ActiveTool = DrawToolType.BinaryExtract; } } /// /// 直线分割 /// /// /// private void menuLinearSegmentation_Click(object sender, EventArgs e) { if (AppWorkspace.ActiveDocumentWorkspace != null) { if (AppWorkspace.startScriptRecording) { AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List()); } AppWorkspace.ActiveDocumentWorkspace.ActiveTool = DrawToolType.BinarySplitLine; } } /// /// 单个删除 /// /// /// private void menuSingleDelete_Click(object sender, EventArgs e) { if (AppWorkspace.ActiveDocumentWorkspace != null) { if (AppWorkspace.startScriptRecording) { AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List()); } AppWorkspace.ActiveDocumentWorkspace.ActiveTool = DrawToolType.BinaryDelete; } } /// /// 矩形删除 /// /// /// private void menuRectangleDelete_Click(object sender, EventArgs e) { if (AppWorkspace.ActiveDocumentWorkspace != null) { if (AppWorkspace.startScriptRecording) { AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List()); } AppWorkspace.ActiveDocumentWorkspace.ActiveTool = DrawToolType.BinaryDeleteRectangle; } } /// /// 多边形删除 /// /// /// private void menuPolygonleDelete_Click(object sender, EventArgs e) { if (AppWorkspace.ActiveDocumentWorkspace != null) { if (AppWorkspace.startScriptRecording) { AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List()); } AppWorkspace.ActiveDocumentWorkspace.ActiveTool = DrawToolType.BinaryDeletePolygon; } } /// /// 轨迹添加 /// /// /// private void menuTrackAdd_Click(object sender, EventArgs e) { if (AppWorkspace.ActiveDocumentWorkspace != null) { List phases = this.AppWorkspace.ActiveDocumentWorkspace.PhaseModels.FindAll(a => a.choise == true && a.mat != null); if (phases.Count > 0) { if (AppWorkspace.startScriptRecording) { AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List()); } AppWorkspace.ActiveDocumentWorkspace.ActiveTool = DrawToolType.BinaryAddTrack; } else { MessageBox.Show(PdnResources.GetString("Menu.Pleaseselecphasetoprocess.Text")); } } } /// /// 连续操作 /// /// /// private void menuContinuousOperation_Click(object sender, EventArgs e) { if(AppWorkspace.ActiveDocumentWorkspace!=null) { if (AppWorkspace.startScriptRecording) { AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List()); } AppWorkspace.ActiveDocumentWorkspace.ContinuousBinaryAction = !AppWorkspace.ActiveDocumentWorkspace.ContinuousBinaryAction; this.AppWorkspace.toolBar.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.ContinuousBinaryAction, "ContinuousOperation"); this.AppWorkspace.toolsPanel.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.ContinuousBinaryAction, "ContinuousOperation"); if (!AppWorkspace.ActiveDocumentWorkspace.ContinuousBinaryAction && !(AppWorkspace.ActiveDocumentWorkspace.ActiveTool >= DrawToolType.DrawRectangle && AppWorkspace.ActiveDocumentWorkspace.ActiveTool <= DrawToolType.DrawPrestoredRuler) && !(AppWorkspace.ActiveDocumentWorkspace.ActiveTool >= DrawToolType.MeasureLine && AppWorkspace.ActiveDocumentWorkspace.ActiveTool <= DrawToolType.MeasureThreePointArc)) { AppWorkspace.ActiveDocumentWorkspace.ActiveTool = DrawToolType.Pointer; } this.menuContinuousOperation.Checked = AppWorkspace.ActiveDocumentWorkspace.ContinuousBinaryAction; } } /// /// 取消操作 /// /// /// private void menuCancelOperation_Click(object sender, EventArgs e) { if (AppWorkspace.ActiveDocumentWorkspace != null) { if (AppWorkspace.startScriptRecording) { AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List()); } AppWorkspace.ActiveDocumentWorkspace.ActiveTool = DrawToolType.Pointer; } } private string GetCultureInfoName(CultureInfo ci) { CultureInfo en_US = new CultureInfo("en-US"); if (ci.Equals(en_US)) { return GetCultureInfoName(ci.Parent); } else { return ci.NativeName; } } } }