123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847 |
- 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
- {
- /// <summary>
- /// 二值操作
- /// </summary>
- 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);
- }
- /// <summary>
- /// 二值提取
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- 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();
- }
- /// <summary>
- /// 物相提取
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- 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<Args>());
- }
- new PhaseExtractDialog(AppWorkspace, PdnResources.GetString("Menu.BinaryAction.PhaseExtraction.Text")/*;//待修改中文资源-scc备注 20191219*/, this.MenuId).ShowDialog();
- }
- }
- /// <summary>
- /// 晶界重现
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- 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);
- }
- /// <summary>
- /// 腐蚀
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void erosionExtraction_Click(object sender, EventArgs e)
- {
- if (AppWorkspace.ActiveDocumentWorkspace != null)
- {
- List<PhaseModel> 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();
- }
- }
- /// <summary>
- /// 膨胀
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void dilationExtraction_Click(object sender, EventArgs e)
- {
- if (AppWorkspace.ActiveDocumentWorkspace != null)
- {
- List<PhaseModel> 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();
- }
- }
- /// <summary>
- /// 粗化
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void menuThickening_Click(object sender, EventArgs e)
- {
- if (AppWorkspace.ActiveDocumentWorkspace != null)
- {
- List<PhaseModel> 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"));
- }
- }
- }
- /// <summary>
- /// 细化
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void menuThinning_Click(object sender, EventArgs e)
- {
- if (AppWorkspace.ActiveDocumentWorkspace != null)
- {
- List<PhaseModel> 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"));
- }
- }
- }
- /// <summary>
- /// 开运算
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void menuOpenExtraction_Click(object sender, EventArgs e)
- {
- if (AppWorkspace.ActiveDocumentWorkspace != null)
- {
- List<PhaseModel> 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"));
- }
- }
- }
- /// <summary>
- /// 闭运算
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void menuCloseExtraction_Click(object sender, EventArgs e)
- {
- if (AppWorkspace.ActiveDocumentWorkspace != null)
- {
- List<PhaseModel> 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"));
- }
- }
- }
- /// <summary>
- /// 形态学分割
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void menuMorphologySegment_Click(object sender, EventArgs e)
- {
- if (AppWorkspace.ActiveDocumentWorkspace != null)
- {
- List<PhaseModel> 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();
- }
- }
- /// <summary>
- /// 分水岭分割
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void menuWatershedSegment_Click(object sender, EventArgs e)
- {
- if (AppWorkspace.ActiveDocumentWorkspace != null)
- {
- List<PhaseModel> 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<Args>());
- }
- new NormalOperationDialog(AppWorkspace, ActionType.ActionWatershedSegment, PdnResources.GetString("Menu.Binaryoperation.watersheation.Binaryomentation.text"), (PdnMenuItem)sender).ShowDialog();
- }
- }
- /// <summary>
- /// 去碎屑
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void menuDebrisAction_Click(object sender, EventArgs e)
- {
- if (AppWorkspace.ActiveDocumentWorkspace != null)
- {
- List<PhaseModel> 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<Args>());
- }
- new NormalOperationDialog(AppWorkspace, ActionType.ActionDebris, PdnResources.GetString("Menu.Binaryoperation.Removedebris.Binaryopedebris.text"), (PdnMenuItem)sender).ShowDialog();
- }
- else
- {
- MessageBox.Show(PdnResources.GetString("Menu.Pleaseselecphasetoprocess.Text"));
- }
- }
- }
- /// <summary>
- /// 抽骨架
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void menuSkeletonAction_Click(object sender, EventArgs e)
- {
- if (AppWorkspace.ActiveDocumentWorkspace != null)
- {
- List<PhaseModel> 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<Args>());
- }
- new NormalOperationDialog(AppWorkspace, ActionType.ActionSkeleton, PdnResources.GetString("Menu.Binaryoperation.skeletonform.Binaryoperanextraction.text"), (PdnMenuItem)sender).ShowDialog();
- }
- else
- {
- MessageBox.Show(PdnResources.GetString("Menu.Pleaseselecphasetoprocess.Text"));
- }
- }
- }
- /// <summary>
- /// 孔洞填充,直接操作相
- /// 没有相就没有任何变化
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- 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<Args>());
- }
- List<PhaseModel> 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"));
- }
- }
- }
- /// <summary>
- /// 孔洞删除
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void menuHoleRemoval_Click(object sender, EventArgs e)
- {
- if (AppWorkspace.ActiveDocumentWorkspace != null)
- {
- List<PhaseModel> 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<Args>());
- }
- new NormalOperationDialog(AppWorkspace, ActionType.ActionHoleRemoval, PdnResources.GetString("Menu.Binaryoperation.Holedelete.Binaryoperation.text"), (PdnMenuItem)sender).ShowDialog();
- }
- else
- {
- MessageBox.Show(PdnResources.GetString("Menu.Pleaseselecphasetoprocess.Text"));
- }
- }
- }
-
- /// <summary>
- /// 对象处理
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void menuObjectAction_Click(object sender, EventArgs e)
- {
- if (AppWorkspace.ActiveDocumentWorkspace != null)
- {
- List<PhaseModel> 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<Args>());
- }
- 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();
- // }
- //}
- }
- }
- /// <summary>
- /// 单个提取
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- 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<Args>());
- }
- AppWorkspace.ActiveDocumentWorkspace.ActiveTool = DrawToolType.BinaryExtract;
- }
- }
- /// <summary>
- /// 直线分割
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- 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<Args>());
- }
- AppWorkspace.ActiveDocumentWorkspace.ActiveTool = DrawToolType.BinarySplitLine;
- }
- }
- /// <summary>
- /// 单个删除
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- 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<Args>());
- }
- AppWorkspace.ActiveDocumentWorkspace.ActiveTool = DrawToolType.BinaryDelete;
- }
- }
- /// <summary>
- /// 矩形删除
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- 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<Args>());
- }
- AppWorkspace.ActiveDocumentWorkspace.ActiveTool = DrawToolType.BinaryDeleteRectangle;
- }
- }
- /// <summary>
- /// 多边形删除
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- 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<Args>());
- }
- AppWorkspace.ActiveDocumentWorkspace.ActiveTool = DrawToolType.BinaryDeletePolygon;
- }
- }
- /// <summary>
- /// 轨迹添加
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void menuTrackAdd_Click(object sender, EventArgs e)
- {
- if (AppWorkspace.ActiveDocumentWorkspace != null)
- {
- List<PhaseModel> 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<Args>());
- }
- AppWorkspace.ActiveDocumentWorkspace.ActiveTool = DrawToolType.BinaryAddTrack;
- }
- else
- {
- MessageBox.Show(PdnResources.GetString("Menu.Pleaseselecphasetoprocess.Text"));
- }
- }
- }
- /// <summary>
- /// 连续操作
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- 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<Args>());
- }
- 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;
- }
- }
- /// <summary>
- /// 取消操作
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- 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<Args>());
- }
- 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;
- }
- }
- }
- }
|