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;
}
}
}
}