| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278 | using PaintDotNet.Base;using PaintDotNet.Data.Param;using PaintDotNet.Processing;using System;using System.Collections.Generic;using System.Windows.Forms;namespace PaintDotNet.Menus{    /// <summary>    /// 图像处理菜单    /// </summary>    internal sealed class ImageMenu : PdnMenuItem    {        private PdnMenuItem menuImageAdjust;        private PdnMenuItem menuImageSharpen;        private PdnMenuItem menuImageSmooth;        private ToolStripSeparator menuImageSeparator1;        private PdnMenuItem menuImageEdgeDetection;        private PdnMenuItem menuImageInterOperation;        private ToolStripSeparator menuImageSeparator2;        private PdnMenuItem menuImageShift;        private PdnMenuItem menuImageStitching;        private PdnMenuItem menuImageDepthExtension;        //反色        private PdnMenuItem menuImageReverseColor;        //灰度化        private PdnMenuItem menuImageGrayscale;        //白平衡        private PdnMenuItem menuImageWhiteBalance;        //色彩平衡        private PdnMenuItem menuImageColorBalance;        //阴影校正        private PdnMenuItem menuImageShadingCorrection;        //色度/饱和度/亮度        private PdnMenuItem menuImageHSLAdjust;        //亮度/对比度/伽马值        private PdnMenuItem menuImageBCGAdjust;        //图像旋转        private PdnMenuItem menuImageRotate;        //图像处理        private PdnMenuItem menuImageChange;        //描绘        private PdnMenuItem menuImagePortray;        //加强轮廓        private PdnMenuItem menuImageEnhanceContour;        //虚化蒙版        private PdnMenuItem menuImageBlurMask;        //西格玛        private PdnMenuItem menuImageSigma;        //各向异性高斯滤波        private PdnMenuItem menuImageGaussianFiltering;        //低通滤波        private PdnMenuItem menuImageLowPassFiltering;        //中值滤波        private PdnMenuItem menuImageMedianFiltering;        //高斯模糊        private PdnMenuItem menuImageGaussianBlur;        //双边滤波        private PdnMenuItem menuImageBilateralFiltering;        //小波降噪        private PdnMenuItem menuImageWaveletDenoising;        //Log        private PdnMenuItem menuImageLog;        //Canny        private PdnMenuItem menuImageCanny;        //Sobel        private PdnMenuItem menuImageSobel;        //Kirsch        private PdnMenuItem menuImageKirsch;        //Prewitt        private PdnMenuItem menuImagePrewitt;        //Roberts        private PdnMenuItem menuImageRoberts;        //Laplace        private PdnMenuItem menuImageLaplace;        //增加        private PdnMenuItem menuImageAddition;        //减去        private PdnMenuItem menuImageSubtraction;        //乘以        private PdnMenuItem menuImageMultiplication;        //除以        private PdnMenuItem menuImageDivision;        //平均        private PdnMenuItem menuImageAverage;        //平方        private PdnMenuItem menuImageSquare;        //平方根        private PdnMenuItem menuImageSquareRoot;        //对数        private PdnMenuItem menuImageLogarithm;        //指数        private PdnMenuItem menuImageIndex;        //最大值        private PdnMenuItem menuImageMax;        //最小值        private PdnMenuItem menuImageMin;        public ImageMenu(int menuId)        {            InitializeComponent();            this.MenuId = menuId;        }        private void InitializeComponent()        {            this.menuImageAdjust = new PdnMenuItem(ActionType.Adjust);            this.menuImageSharpen = new PdnMenuItem(ActionType.Sharpen);            this.menuImageSmooth = new PdnMenuItem(ActionType.Smooth);            this.menuImageSeparator1 = new ToolStripSeparator();            this.menuImageEdgeDetection = new PdnMenuItem(ActionType.EdgeDetection);            this.menuImageInterOperation = new PdnMenuItem(ActionType.InterImageOperation);            this.menuImageSeparator2 = new ToolStripSeparator();            this.menuImageShift = new PdnMenuItem(ActionType.ActionImageOffset);            this.menuImageStitching = new PdnMenuItem(ActionType.ActionImageStitching);            this.menuImageStitching.AutomaticScript = false;            this.menuImageDepthExtension = new PdnMenuItem(ActionType.ActionExtendedDepthOfFocus);            this.menuImageDepthExtension.AutomaticScript = false;            this.menuImageReverseColor = new PdnMenuItem(ActionType.ActionRevertColor);            this.menuImageGrayscale = new PdnMenuItem(ActionType.ActionBgr2Gray);            this.menuImageWhiteBalance = new PdnMenuItem(ActionType.ActionWhiteBalance);            this.menuImageColorBalance = new PdnMenuItem(ActionType.ActionColorBalance);            this.menuImageShadingCorrection = new PdnMenuItem(ActionType.ActionShadingCorrection);            this.menuImageHSLAdjust = new PdnMenuItem(ActionType.ActionHSB);            this.menuImageBCGAdjust = new PdnMenuItem(ActionType.ActionBCG);            this.menuImageRotate = new PdnMenuItem(ActionType.ActionImageRotate);            this.menuImageChange = new PdnMenuItem(ActionType.ImageChangeResolution);            this.menuImagePortray = new PdnMenuItem(ActionType.ActionPortray);            this.menuImageEnhanceContour = new PdnMenuItem(ActionType.ActionEnhanceContour);            this.menuImageBlurMask = new PdnMenuItem(ActionType.ActionBlurMask);            this.menuImageSigma = new PdnMenuItem(ActionType.Sigma);            this.menuImageGaussianFiltering = new PdnMenuItem(ActionType.GaussianFiltering);            this.menuImageLowPassFiltering = new PdnMenuItem(ActionType.LowPassFiltering);            this.menuImageMedianFiltering = new PdnMenuItem(ActionType.MedianFiltering);            this.menuImageGaussianBlur = new PdnMenuItem(ActionType.GaussianBlur);            this.menuImageBilateralFiltering = new PdnMenuItem(ActionType.BilateralFiltering);            this.menuImageWaveletDenoising = new PdnMenuItem(ActionType.WaveletDenoising);            this.menuImageLog = new PdnMenuItem(ActionType.Log);            this.menuImageCanny = new PdnMenuItem(ActionType.Canny);            this.menuImageSobel = new PdnMenuItem(ActionType.Sobel);            this.menuImageKirsch = new PdnMenuItem(ActionType.Kirsch);            this.menuImagePrewitt = new PdnMenuItem(ActionType.Prewitt);            this.menuImageRoberts = new PdnMenuItem(ActionType.Roberts);            this.menuImageLaplace = new PdnMenuItem(ActionType.Laplace);            this.menuImageAddition = new PdnMenuItem(ActionType.ActionImageAddition);            this.menuImageAddition.AutomaticScript = false;            this.menuImageSubtraction = new PdnMenuItem(ActionType.ActionImageSubtraction);            this.menuImageSubtraction.AutomaticScript = false;            this.menuImageMultiplication = new PdnMenuItem(ActionType.ActionImageMultiplication);            this.menuImageMultiplication.AutomaticScript = false;            this.menuImageDivision = new PdnMenuItem(ActionType.ActionImageDivision);            this.menuImageDivision.AutomaticScript = false;            this.menuImageAverage = new PdnMenuItem(ActionType.ActionImageAverage);            this.menuImageAverage.AutomaticScript = false;            this.menuImageSquare = new PdnMenuItem(ActionType.ActionImageSquare);            //this.menuImageSquare.AutomaticScript = false;            this.menuImageSquareRoot = new PdnMenuItem(ActionType.ActionImageSquareBoot);            //this.menuImageSquareRoot.AutomaticScript = false;            this.menuImageLogarithm = new PdnMenuItem(ActionType.ActionImageLogarithm);            //this.menuImageLogarithm.AutomaticScript = false;            this.menuImageIndex = new PdnMenuItem(ActionType.ActionImageIndex);            //this.menuImageIndex.AutomaticScript = false;            this.menuImageMax = new PdnMenuItem(ActionType.ActionImageMax);            this.menuImageMax.AutomaticScript = false;            this.menuImageMin = new PdnMenuItem(ActionType.ActionImageMin);            this.menuImageMin.AutomaticScript = false;            //            // ImageMenu            //            this.DropDownItems.AddRange(                new ToolStripItem[]                {                    this.menuImageAdjust,                    this.menuImageSharpen,                    this.menuImageSmooth,                    this.menuImageSeparator1,                    this.menuImageEdgeDetection,                    this.menuImageInterOperation,                    this.menuImageSeparator2,                    this.menuImageShift,                    this.menuImageStitching,                    this.menuImageDepthExtension                });            this.Name = "Menu.Image";            this.Text = PdnResources.GetString("Menu.Image.Text");            //            // 调节            //            this.menuImageAdjust.DropDownItems.AddRange(                new ToolStripItem[]                {                    this.menuImageReverseColor,                    this.menuImageGrayscale,                    this.menuImageWhiteBalance,                    this.menuImageColorBalance,                    this.menuImageShadingCorrection,                    this.menuImageHSLAdjust,                    this.menuImageBCGAdjust,                    this.menuImageRotate,                    this.menuImageChange                });            //            // 锐化            //            this.menuImageSharpen.DropDownItems.AddRange(                new ToolStripItem[]                {                    this.menuImagePortray,                    this.menuImageEnhanceContour,                    this.menuImageBlurMask                });            //            // 平滑            //            this.menuImageSmooth.DropDownItems.AddRange(                new ToolStripItem[]                {                    this.menuImageSigma,                    this.menuImageGaussianFiltering,                    this.menuImageLowPassFiltering,                    this.menuImageMedianFiltering,                    this.menuImageGaussianBlur,                    this.menuImageBilateralFiltering,                    this.menuImageWaveletDenoising                });            //            // 边缘检测            //            this.menuImageEdgeDetection.DropDownItems.AddRange(                new ToolStripItem[]                {                    this.menuImageLog,                    this. menuImageCanny,                    this.menuImageSobel,                    this.menuImageKirsch,                    this.menuImagePrewitt,                    this.menuImageRoberts,                    this.menuImageLaplace                });            //            // 图像间操作            //            this.menuImageInterOperation.DropDownItems.AddRange(                new ToolStripItem[]                {                    this.menuImageAddition,                    this.menuImageSubtraction,                    this.menuImageMultiplication,                    this.menuImageDivision,                    this.menuImageAverage,                    this.menuImageSquare,                    this.menuImageSquareRoot,                    this.menuImageLogarithm,                    this.menuImageIndex,                    this.menuImageMax,                    this.menuImageMin                });            //            // 图像偏移            //            this.menuImageShift.Click += new EventHandler(menuImageShift_Click);            //            // 图像拼接            //            this.menuImageStitching.Click += new EventHandler(menuImageStitching_Click);            //            // 景深扩展            //            this.menuImageDepthExtension.Click += new EventHandler(MenuImageDepthExtension_Click);                        //            // 以下是子菜单            //            //            // 反色            //            this.menuImageReverseColor.Click += new EventHandler(menuImageReverseColor_Click);            this.menuImageReverseColor.Text = PdnResources.GetString("Menu.Image.ReverseColor.Text");            this.menuImageReverseColor.Image = PdnResources.GetImageResource("Icons.MenuActionReverseColorIcon.png").Reference;            //            // 灰度化            //            this.menuImageGrayscale.Click += new EventHandler(menuImageGrayscale_Click);            this.menuImageGrayscale.Text = PdnResources.GetString("Menu.Image.Grayscale.Text");            this.menuImageGrayscale.Image = PdnResources.GetImageResource("Icons.MenuActionGrayscaleIcon.png").Reference;            //            // 白平衡            //            this.menuImageWhiteBalance.Click += new EventHandler(menuImageWhiteBalance_Click);            this.menuImageWhiteBalance.Text = PdnResources.GetString("Menu.Image.WhiteBalance.Text");            this.menuImageWhiteBalance.Image = PdnResources.GetImageResource("Icons.MenuActionWhiteBalanceIcon.png").Reference;            //            // 色彩平衡            //            this.menuImageColorBalance.Click += new EventHandler(menuImageColorBalance_Click);            this.menuImageColorBalance.Text = PdnResources.GetString("Menu.Image.ColorBalance.Text");            this.menuImageColorBalance.Image = PdnResources.GetImageResource("Icons.MenuActionColorBalanceIcon.png").Reference;            //            // 阴影校正            //            this.menuImageShadingCorrection.Click += new EventHandler(MenuImageShadingCorrection_Click);            this.menuImageShadingCorrection.Text = PdnResources.GetString("Menu.Image.ShadingCorrection.Text");            this.menuImageShadingCorrection.Image = PdnResources.GetImageResource("Icons.MenuActionShadingCorrectionIcon.png").Reference;            //            // 色度/饱和度/亮度            //            this.menuImageHSLAdjust.Click += new EventHandler(menuImageHSLAdjust_Click);            this.menuImageHSLAdjust.Text = PdnResources.GetString("Menu.Image.HSLAdjust.Text");            this.menuImageHSLAdjust.Image = PdnResources.GetImageResource("Icons.MenuActionHSLAdjustIcon.png").Reference;            //            // 亮度/对比度/伽马值            //            this.menuImageBCGAdjust.Click += new EventHandler(menuImageBCGAdjust_Click); /*menuImageBCGAdjust_Click*/            this.menuImageBCGAdjust.Text = PdnResources.GetString("Menu.Image.BCGAdjust.Text");            this.menuImageBCGAdjust.Image = PdnResources.GetImageResource("Icons.MenuActionBCGAdjustIcon.png").Reference;            //            // 图像旋转            //            this.menuImageRotate.NeedOpenDialog = true;            this.menuImageRotate.Click += new EventHandler(menuImageRotate_Click);            this.menuImageRotate.Text = PdnResources.GetString("Menu.Imagerotation.text");            this.menuImageRotate.Image = PdnResources.GetImageResource("Icons.MenuImageXuanZhuan.png").Reference;            //            // 分辨率调整            //            this.menuImageChange.NeedOpenDialog = true;            this.menuImageChange.Click += new EventHandler(menuImageChange_Click);            this.menuImageChange.Text = "分辨率调整";            this.menuImageChange.Image = PdnResources.GetImageResource("Icons.MenuImageXuanZhuan.png").Reference;            //            // 描绘            //            this.menuImagePortray.Click += new EventHandler(menuImagePortray_Click);            this.menuImagePortray.Text = PdnResources.GetString("Menu.Image.Portray.Text");            this.menuImagePortray.Image = PdnResources.GetImageResource("Icons.MenuActionPortrayIcon.png").Reference;            //            // 加强轮廓            //            this.menuImageEnhanceContour.Click += new EventHandler(menuImageEnhanceContour_Click);            this.menuImageEnhanceContour.Text = PdnResources.GetString("Menu.Image.EnhanceContour.Text");            this.menuImageEnhanceContour.Image = PdnResources.GetImageResource("Icons.MenuActionEnhanceContourIcon.png").Reference;            //            // 虚化蒙版            //            this.menuImageBlurMask.Click += new EventHandler(menuImageBlurMask_Click);            this.menuImageBlurMask.Text = PdnResources.GetString("Menu.Image.BlurMask.Text");            this.menuImageBlurMask.Image = PdnResources.GetImageResource("Icons.MenuActionBlurMaskIcon.png").Reference;            //            // 西格玛            //            this.menuImageSigma.Click += new EventHandler(menuImageSigma_Click);            this.menuImageSigma.Text = PdnResources.GetString("Menu.Image.Sigma.Text");            this.menuImageSigma.Image = PdnResources.GetImageResource("Icons.MenuActionSigmaIcon.png").Reference;            //            // 各向异性高斯滤波            //            this.menuImageGaussianFiltering.Click += new EventHandler(menuImageGaussianFiltering_Click);            this.menuImageGaussianFiltering.Text = PdnResources.GetString("Menu.Image.GaussianFiltering.Text");            this.menuImageGaussianFiltering.Image = PdnResources.GetImageResource("Icons.MenuActionGaussianFilteringIcon.png").Reference;            //            // 低通滤波            //            this.menuImageLowPassFiltering.Click += new EventHandler(menuImageLowPassFiltering_Click);            this.menuImageLowPassFiltering.Text = PdnResources.GetString("Menu.Image.LowPassFiltering.Text");            this.menuImageLowPassFiltering.Image = PdnResources.GetImageResource("Icons.MenuActionLowPassFilteringIcon.png").Reference;            //            // 中值滤波            //            this.menuImageMedianFiltering.Click += new EventHandler(menuImageMedianFiltering_Click);            this.menuImageMedianFiltering.Text = PdnResources.GetString("Menu.Image.MedianFiltering.Text");            this.menuImageMedianFiltering.Image = PdnResources.GetImageResource("Icons.MenuActionMedianFilteringIcon.png").Reference;            //            // 高斯模糊            //            this.menuImageGaussianBlur.Click += new EventHandler(menuImageGaussianBlur_Click);            this.menuImageGaussianBlur.Text = PdnResources.GetString("Menu.Image.GaussianBlur.Text");            this.menuImageGaussianBlur.Image = PdnResources.GetImageResource("Icons.MenuActionGaussianBlurIcon.png").Reference;            //            // 双边滤波            //            this.menuImageBilateralFiltering.Click += new EventHandler(menuImageBilateralFiltering_Click);            this.menuImageBilateralFiltering.Text = PdnResources.GetString("Menu.Image.BilateralFiltering.Text");            this.menuImageBilateralFiltering.Image = PdnResources.GetImageResource("Icons.MenuActionBilateralFilteringIcon.png").Reference;            //            // 小波降噪            //            this.menuImageWaveletDenoising.Click += new EventHandler(menuImageWaveletDenoising_Click);            this.menuImageWaveletDenoising.Text = PdnResources.GetString("Menu.Image.WaveletDenoising.Text");            this.menuImageWaveletDenoising.Image = PdnResources.GetImageResource("Icons.MenuActionWaveletDenoisingIcon.png").Reference;            //            // Log            //            this.menuImageLog.Click += new EventHandler(menuImageLog_Click);            this.menuImageLog.Text = PdnResources.GetString("Menu.Image.Log.Text");            this.menuImageLog.Image = PdnResources.GetImageResource("Icons.MenuActionLogIcon.png").Reference;            //            // Canny            //            this.menuImageCanny.Click += new EventHandler(menuImageCanny_Click);            this.menuImageCanny.Text = PdnResources.GetString("Menu.Image.Canny.Text");            this.menuImageCanny.Image = PdnResources.GetImageResource("Icons.MenuActionCannyIcon.png").Reference;            //            // Sobel            //            this.menuImageSobel.Click += new EventHandler(menuImageSobel_Click);            this.menuImageSobel.Text = PdnResources.GetString("Menu.Image.Sobel.Text");            this.menuImageSobel.Image = PdnResources.GetImageResource("Icons.MenuActionSobelIcon.png").Reference;            //            // Kirsch            //            this.menuImageKirsch.Click += new EventHandler(menuImageKirsch_Click);            this.menuImageKirsch.Text = PdnResources.GetString("Menu.Image.Kirsch.Text");            this.menuImageKirsch.Image = PdnResources.GetImageResource("Icons.MenuActionKirschIcon.png").Reference;            //            // Prewitt            //            this.menuImagePrewitt.Click += new EventHandler(menuImagePrewitt_Click);            this.menuImagePrewitt.Text = PdnResources.GetString("Menu.Image.Prewitt.Text");            this.menuImagePrewitt.Image = PdnResources.GetImageResource("Icons.MenuActionPrewittIcon.png").Reference;            //            // Roberts            //            this.menuImageRoberts.Click += new EventHandler(menuImageRoberts_Click);            this.menuImageRoberts.Text = PdnResources.GetString("Menu.Image.Roberts.Text");            this.menuImageRoberts.Image = PdnResources.GetImageResource("Icons.MenuActionRobertsIcon.png").Reference;            //            // Laplace            //            this.menuImageLaplace.Click += new EventHandler(menuImageLaplace_Click);            this.menuImageLaplace.Text = PdnResources.GetString("Menu.Image.Laplace.Text");            this.menuImageLaplace.Image = PdnResources.GetImageResource("Icons.MenuActionLaplaceIcon.png").Reference;            //            // 加            //            this.menuImageAddition.Click += new EventHandler(menuImageAddition_Click);            this.menuImageAddition.Text = PdnResources.GetString("Menu.Image.Addition.Text");            this.menuImageAddition.Image = PdnResources.GetImageResource("Icons.MenuActionAdditionIcon.png").Reference;            //            // 减            //            this.menuImageSubtraction.Click += new EventHandler(menuImageSubtraction_Click);            this.menuImageSubtraction.Text = PdnResources.GetString("Menu.Image.Subtraction.Text");            this.menuImageSubtraction.Image = PdnResources.GetImageResource("Icons.MenuActionSubtractionIcon.png").Reference;            //            // 乘            //            this.menuImageMultiplication.Click += new EventHandler(menuImageMultiplication_Click);            this.menuImageMultiplication.Text = PdnResources.GetString("Menu.Image.Multiplication.Text");            this.menuImageMultiplication.Image = PdnResources.GetImageResource("Icons.MenuActionMultiplicationIcon.png").Reference;            //            // 除            //            this.menuImageDivision.Click += new EventHandler(menuImageDivision_Click);            this.menuImageDivision.Text = PdnResources.GetString("Menu.Image.Division.Text");            this.menuImageDivision.Image = PdnResources.GetImageResource("Icons.MenuActionDivisionIcon.png").Reference;            //            // 平均            //            this.menuImageAverage.Click += new EventHandler(menuImageAverage_Click);            this.menuImageAverage.Text = PdnResources.GetString("Menu.Image.Average.Text");            this.menuImageAverage.Image = PdnResources.GetImageResource("Icons.MenuActionAverageIcon.png").Reference;            //            // 平方            //            this.menuImageSquare.Click += new EventHandler(menuImageSquare_Click);            this.menuImageSquare.Text = PdnResources.GetString("Menu.Image.Square.Text");            this.menuImageSquare.Image = PdnResources.GetImageResource("Icons.MenuActionSquareIcon.png").Reference;            //            // 平方根            //            this.menuImageSquareRoot.Click += new EventHandler(menuImageSquareBoot_Click);            this.menuImageSquareRoot.Text = PdnResources.GetString("Menu.Image.SquareRoot.Text");            this.menuImageSquareRoot.Image = PdnResources.GetImageResource("Icons.MenuActionSquareRootIcon.png").Reference;            //            // 对数            //            this.menuImageLogarithm.Click += new EventHandler(menuImageLogarithm_Click);            this.menuImageLogarithm.Text = PdnResources.GetString("Menu.Image.Logarithm.Text");            this.menuImageLogarithm.Image = PdnResources.GetImageResource("Icons.MenuActionLogarithmIcon.png").Reference;            //            // 指数            //            this.menuImageIndex.Click += new EventHandler(menuImageIndex_Click);            this.menuImageIndex.Text = PdnResources.GetString("Menu.Image.Index.Text");            this.menuImageIndex.Image = PdnResources.GetImageResource("Icons.MenuActionIndexIcon.png").Reference;            //            // 最大            //            this.menuImageMax.Click += new EventHandler(menuImageMax_Click);            this.menuImageMax.Text = PdnResources.GetString("Menu.Image.Max.Text");            this.menuImageMax.Image = PdnResources.GetImageResource("Icons.MenuActionMaxIcon.png").Reference;            //            // 最小            //            this.menuImageMin.Click += new EventHandler(menuImageMin_Click);            this.menuImageMin.Text = PdnResources.GetString("Menu.Image.Min.Text");            this.menuImageMin.Image = PdnResources.GetImageResource("Icons.MenuActionMinIcon.png").Reference;            //            // 加载菜单的文字和icon            //            this.LoadNames(this.Name);            this.LoadIcons();        }        /// <summary>        /// 反色        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void menuImageReverseColor_Click(object sender, EventArgs e)        {            if (AppWorkspace.ActiveDocumentWorkspace != null)             {                new BshTransferAdjustDialog(AppWorkspace, ActionType.ActionRevertColor, PdnResources.GetString("Menu.ImageProcessing.adjust.Imageprocevert.text")/*;//待修改中文资源-scc备注 20191216*/,(PdnMenuItem)sender).ShowDialog();            }            else                MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));        }        /// <summary>        /// 灰度化        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void menuImageGrayscale_Click(object sender, EventArgs e)        {            if (AppWorkspace.ActiveDocumentWorkspace != null)             {                new BshTransferAdjustDialog(AppWorkspace, ActionType.ActionBgr2Gray, PdnResources.GetString("Menu.ImageProcessing.adjust.Imagepaying.text")/*;//待修改中文资源-scc备注 20191216*/, (PdnMenuItem)sender).ShowDialog();            }            else                MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));        }        /// <summary>        /// 白平衡        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void menuImageWhiteBalance_Click(object sender, EventArgs e)        {            if (AppWorkspace.ActiveDocumentWorkspace != null)                new BshTransferAdjustDialog(AppWorkspace, ActionType.ActionWhiteBalance, PdnResources.GetString("Menu.ImageProcessing.adjust.Imagepitebalance.text")/*;//待修改中文资源-scc备注 20191216*/, (PdnMenuItem)sender).ShowDialog();            else                MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));        }        /// <summary>        /// 色彩平衡        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void menuImageColorBalance_Click(object sender, EventArgs e)        {            if (AppWorkspace.ActiveDocumentWorkspace != null)                new BshTransferAdjustDialog(AppWorkspace, ActionType.ActionColorBalance, PdnResources.GetString("Menu.Imageprocesorbalance.text")/*;//待修改中文资源-scc备注 20191216*/, (PdnMenuItem)sender).ShowDialog();            else                MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));        }        /// <summary>        /// 阴影校正        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void MenuImageShadingCorrection_Click(object sender, EventArgs e)        {            if (AppWorkspace.ActiveDocumentWorkspace != null) {                new BshTransferAdjustDialog(AppWorkspace, ActionType.ActionShadingCorrection, PdnResources.GetString("Menu.Imageprocessingadjustmentshadowcorrection.Text")/*;//待修改中文资源-scc备注 20191216*/, (PdnMenuItem)sender).ShowDialog();            }            else                MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));        }        /// <summary>        /// 色度/饱和度/亮度        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void menuImageHSLAdjust_Click(object sender, EventArgs e)        {            if (AppWorkspace.ActiveDocumentWorkspace != null)                new BshTransferAdjustDialog(AppWorkspace, ActionType.ActionHSB, PdnResources.GetString("Menu.processingadjustmentchrom.Text")/*;//待修改中文资源-scc备注 20191212*/, (PdnMenuItem)sender).ShowDialog();            else                MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));        }        /// <summary>        /// 亮度/对比度/伽马值        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void menuImageBCGAdjust_Click(object sender, EventArgs e)        {            if (AppWorkspace.ActiveDocumentWorkspace != null)                new BshTransferAdjustDialog(AppWorkspace, ActionType.ActionBCG, PdnResources.GetString("Menu.eprocessinadjustmentbrigh.Text")/*;//待修改中文资源-scc备注 20191212*/, (PdnMenuItem)sender).ShowDialog();            else                MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));        }        /// <summary>        /// 图像旋转        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void menuImageRotate_Click(object sender, EventArgs e)        {            if (AppWorkspace.ActiveDocumentWorkspace != null)                new BshTransferAdjustDialog(AppWorkspace, ActionType.ActionImageRotate, PdnResources.GetString("Menu.Image.Text") + "-" + PdnResources.GetString("Menu.Image.Adjust.Text") + "-" + PdnResources.GetString("Menu.Imagerotation.text")/*;//待修改中文资源-scc备注 20191212*/, (PdnMenuItem)sender).ShowDialog();            else                MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));        }        /// <summary>        /// 图像分辨率调整        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void menuImageChange_Click(object sender, EventArgs e)        {            if (AppWorkspace.ActiveDocumentWorkspace != null)                new BshTransferAdjustDialog(AppWorkspace, ActionType.ImageChangeResolution, PdnResources.GetString("Menu.Image.Text") + "-" + PdnResources.GetString("Menu.Image.Adjust.Text") + "-" + "分辨率调整", (PdnMenuItem)sender).ShowDialog();            else                MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));        }        /// <summary>        /// 描绘        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void menuImagePortray_Click(object sender, EventArgs e)        {            if (AppWorkspace.ActiveDocumentWorkspace != null)                new BshTransferAdjustDialog(AppWorkspace, ActionType.ActionPortray, PdnResources.GetString("Menu.ImageProcessing.Sharpen.Imagscribe.text")/*;//待修改中文资源-scc备注 20191216*/, (PdnMenuItem)sender).ShowDialog();            else                MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));        }        /// <summary>        /// 加强轮廓        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void menuImageEnhanceContour_Click(object sender, EventArgs e)        {            if (AppWorkspace.ActiveDocumentWorkspace != null)                new BshTransferAdjustDialog(AppWorkspace, ActionType.ActionEnhanceContour, PdnResources.GetString("Menu.Imageprochencontours.text")/*;//待修改中文资源-scc备注 20191216*/, (PdnMenuItem)sender).ShowDialog();            else                MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));        }        /// <summary>        /// 虚化蒙版        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void menuImageBlurMask_Click(object sender, EventArgs e)        {            if (AppWorkspace.ActiveDocumentWorkspace != null)                new BshTransferAdjustDialog(AppWorkspace, ActionType.ActionBlurMask, PdnResources.GetString("Menu.Image.Text")+"-"+PdnResources.GetString("Menu.Image.Sharpen.Text")+"-"+PdnResources.GetString("Menu.Image.BlurMask.Text")/*;//待修改中文资源-scc备注 20191216*/, (PdnMenuItem)sender).ShowDialog();            else                MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));        }        /// <summary>        /// 西格玛        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void menuImageSigma_Click(object sender, EventArgs e)        {            if (AppWorkspace.ActiveDocumentWorkspace != null)                new BshTransferAdjustDialog(AppWorkspace, ActionType.Sigma,PdnResources.GetString("Menu.ImageProcessing.smooth.ImageProcgma.text")/*;//待修改中文资源-scc备注 20191216*/, (PdnMenuItem)sender).ShowDialog();            else                MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));        }        /// <summary>        /// 各向异性高斯滤波        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>F        private void menuImageGaussianFiltering_Click(object sender, EventArgs e)        {            if (AppWorkspace.ActiveDocumentWorkspace != null)                new BshTransferAdjustDialog(AppWorkspace, ActionType.GaussianFiltering,PdnResources.GetString("Menu.ImageProcessing.smooth.Imagnfiltering.text")/*;//待修改中文资源-scc备注 20191216*/, (PdnMenuItem)sender).ShowDialog();            else                MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));        }        /// <summary>        /// 低通滤波        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void menuImageLowPassFiltering_Click(object sender, EventArgs e)        {            if (AppWorkspace.ActiveDocumentWorkspace != null)                new BshTransferAdjustDialog(AppWorkspace, ActionType.LowPassFiltering,PdnResources.GetString("Menu.Image.Text")+"-"+PdnResources.GetString("Menu.Image.Smooth.Text")+"-"+PdnResources.GetString("Menu.Image.LowPassFiltering.Text")/*;//待修改中文资源-scc备注 20191216*/, (PdnMenuItem)sender).ShowDialog();            else                MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));        }        /// <summary>        /// 中值滤波        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void menuImageMedianFiltering_Click(object sender, EventArgs e)        {            if (AppWorkspace.ActiveDocumentWorkspace != null)                new BshTransferAdjustDialog(AppWorkspace, ActionType.MedianFiltering, PdnResources.GetString("Menu.ImageProcessing.smooth.Imageprocdianfilter.text")/*;//待修改中文资源-scc备注 20191216*/, (PdnMenuItem)sender).ShowDialog();            else                MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));        }        /// <summary>        /// 高斯模糊        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void menuImageGaussianBlur_Click(object sender, EventArgs e)        {            if (AppWorkspace.ActiveDocumentWorkspace != null)                new BshTransferAdjustDialog(AppWorkspace, ActionType.GaussianBlur, PdnResources.GetString("Menu.ImageProcessing.smooth.ImageProcessianBlur.text")/*;//待修改中文资源-scc备注 20191216*/, (PdnMenuItem)sender).ShowDialog();            else                MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));        }        /// <summary>        /// 双边滤波        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void menuImageBilateralFiltering_Click(object sender, EventArgs e)        {            if (AppWorkspace.ActiveDocumentWorkspace != null)                new BshTransferAdjustDialog(AppWorkspace, ActionType.BilateralFiltering, PdnResources.GetString("Menu.ImageProcessing.smooth.Imageproltering.text")/*;//待修改中文资源-scc备注 20191216*/, (PdnMenuItem)sender).ShowDialog();            else                MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));        }        /// <summary>        /// 小波降噪        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void menuImageWaveletDenoising_Click(object sender, EventArgs e)        {            if (AppWorkspace.ActiveDocumentWorkspace != null)                new BshTransferAdjustDialog(AppWorkspace, ActionType.WaveletDenoising, PdnResources.GetString("Menu.ImageProcessing.smooth.Imageprocessineanfiltering.text")/* 小波降噪;//待修改中文资源-scc备注 20191216*/, (PdnMenuItem)sender).ShowDialog();            else                MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));        }        /// <summary>        /// Log        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void menuImageLog_Click(object sender, EventArgs e)        {            if (AppWorkspace.ActiveDocumentWorkspace != null) {                new BshTransferAdjustDialog(AppWorkspace, ActionType.Log, PdnResources.GetString("Menu.Image.Text") + "-" + PdnResources.GetString("Menu.Image.EdgeDetection.Text") + "-Log"/*;//待修改中文资源-scc备注 20191216*/, (PdnMenuItem)sender).ShowDialog();            }            else                MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));        }        /// <summary>        /// Canny        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void menuImageCanny_Click(object sender, EventArgs e)        {            if (AppWorkspace.ActiveDocumentWorkspace != null)             {                new BshTransferAdjustDialog(AppWorkspace, ActionType.Canny, PdnResources.GetString("Menu.Image.Text") + "-" + PdnResources.GetString("Menu.Image.EdgeDetection.Text") + "-Canny"/*;//待修改中文资源-scc备注 20191216*/, (PdnMenuItem)sender).ShowDialog();            }            else                MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));        }        /// <summary>        /// Sobel        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void menuImageSobel_Click(object sender, EventArgs e)        {            if (AppWorkspace.ActiveDocumentWorkspace != null)             {                new BshTransferAdjustDialog(AppWorkspace, ActionType.Sobel, PdnResources.GetString("Menu.Image.Text") + "-" + PdnResources.GetString("Menu.Image.EdgeDetection.Text") + "-Sobel"/*;//待修改中文资源-scc备注 20191216*/, (PdnMenuItem)sender).ShowDialog();            }            else                MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));        }        /// <summary>        /// Kirsch        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void menuImageKirsch_Click(object sender, EventArgs e)        {            if (AppWorkspace.ActiveDocumentWorkspace != null)             {                new BshTransferAdjustDialog(AppWorkspace, ActionType.Kirsch, PdnResources.GetString("Menu.Image.Text") + "-" + PdnResources.GetString("Menu.Image.EdgeDetection.Text") + "-Kirsch"/*;//待修改中文资源-scc备注 20191216*/, (PdnMenuItem)sender).ShowDialog();            }            else                MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));        }        /// <summary>        /// Prewitt        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void menuImagePrewitt_Click(object sender, EventArgs e)        {            if (AppWorkspace.ActiveDocumentWorkspace != null) {                new BshTransferAdjustDialog(AppWorkspace, ActionType.Prewitt, PdnResources.GetString("Menu.Image.Text") + "-" + PdnResources.GetString("Menu.Image.EdgeDetection.Text") + "-Prewitt"/*;//待修改中文资源-scc备注 20191216*/, (PdnMenuItem)sender).ShowDialog();            }            else                MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));        }        /// <summary>        /// Roberts        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void menuImageRoberts_Click(object sender, EventArgs e)        {            if (AppWorkspace.ActiveDocumentWorkspace != null)             {                new BshTransferAdjustDialog(AppWorkspace, ActionType.Roberts, PdnResources.GetString("Menu.Image.Text") + "-" + PdnResources.GetString("Menu.Image.EdgeDetection.Text") + "-Roberts"/*;//待修改中文资源-scc备注 20191216*/, (PdnMenuItem)sender).ShowDialog();            }            else                MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));        }        /// <summary>        /// Laplace        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void menuImageLaplace_Click(object sender, EventArgs e)        {            if (AppWorkspace.ActiveDocumentWorkspace != null)             {                new BshTransferAdjustDialog(AppWorkspace, ActionType.Laplace, PdnResources.GetString("Menu.Image.Text") + "-" + PdnResources.GetString("Menu.Image.EdgeDetection.Text") + "-Laplace"/*;//待修改中文资源-scc备注 20191216*/, (PdnMenuItem)sender).ShowDialog();            }            else                MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));        }        /// <summary>        /// 加        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void menuImageAddition_Click(object sender, EventArgs e)        {            if (AppWorkspace.ActiveDocumentWorkspace != null)             {                new InterImageOpDialog(AppWorkspace, ActionType.ActionImageAddition, PdnResources.GetString("Menu.ImageProcessing.boundarydetection.Imageprodd.text")/*;//待修改中文资源-scc备注 20191217*/, (PdnMenuItem)sender).ShowDialog();            }            else                MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));        }        /// <summary>        /// 减        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void menuImageSubtraction_Click(object sender, EventArgs e)        {            if (AppWorkspace.ActiveDocumentWorkspace != null) {                new InterImageOpDialog(AppWorkspace, ActionType.ActionImageSubtraction, PdnResources.GetString("Menu.ImageProcessing.boundarydetection.Imageprub.text")/*;//待修改中文资源-scc备注 20191217*/, (PdnMenuItem)sender).ShowDialog();            }            else                MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));        }        /// <summary>        /// 乘        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void menuImageMultiplication_Click(object sender, EventArgs e)        {            if (AppWorkspace.ActiveDocumentWorkspace != null)                new InterImageOpDialog(AppWorkspace, ActionType.ActionImageMultiplication, PdnResources.GetString("Menu.ImageProcessing.boundarydetection.Imageprocply.text")/*;//待修改中文资源-scc备注 20191217*/, (PdnMenuItem)sender).ShowDialog();            else                MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));        }        /// <summary>        /// 除        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void menuImageDivision_Click(object sender, EventArgs e)        {            if (AppWorkspace.ActiveDocumentWorkspace != null)                new InterImageOpDialog(AppWorkspace, ActionType.ActionImageDivision, PdnResources.GetString("Menu.ImageProcessing.boundarydetection.Imageproision.text")/*;//待修改中文资源-scc备注 20191217*/, (PdnMenuItem)sender).ShowDialog();            else                MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));        }        /// <summary>        /// 平均        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void menuImageAverage_Click(object sender, EventArgs e)        {            if (AppWorkspace.ActiveDocumentWorkspace != null) {                new InterImageOpDialog(AppWorkspace, ActionType.ActionImageAverage, PdnResources.GetString("Menu.ImageProcessing.boundarydetection.Imageperage.text")/*;//待修改中文资源-scc备注 20191217*/, (PdnMenuItem)sender).ShowDialog();            }            else                MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));        }        /// <summary>        /// 平方        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void menuImageSquare_Click(object sender, EventArgs e)        {            if (AppWorkspace.ActiveDocumentWorkspace != null) {                new InterImageOpDialog(AppWorkspace, ActionType.ActionImageSquare, PdnResources.GetString("Menu.ImageProcessing.boundarydetection.Imagepare.text")/*;//待修改中文资源-scc备注 20191217*/, (PdnMenuItem)sender).ShowDialog();            }            else                MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));        }        /// <summary>        /// 平方根        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void menuImageSquareBoot_Click(object sender, EventArgs e)        {            if (AppWorkspace.ActiveDocumentWorkspace != null) {                new InterImageOpDialog(AppWorkspace, ActionType.ActionImageSquareBoot, PdnResources.GetString("Menu.ImageProcessing.boundarydetection.Imageareroots.text")/*;//待修改中文资源-scc备注 20191217*/, (PdnMenuItem)sender).ShowDialog();            }            else                MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));        }        /// <summary>        /// 对数        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void menuImageLogarithm_Click(object sender, EventArgs e)        {            if (AppWorkspace.ActiveDocumentWorkspace != null) {                new InterImageOpDialog(AppWorkspace, ActionType.ActionImageLogarithm, PdnResources.GetString("Menu.ImageProcessing.boundarydetection.Imageprlog.text")/*;//待修改中文资源-scc备注 20191217*/, (PdnMenuItem)sender).ShowDialog();            }            else                MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));        }        /// <summary>        /// 指数        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void menuImageIndex_Click(object sender, EventArgs e)        {            if (AppWorkspace.ActiveDocumentWorkspace != null) {                new InterImageOpDialog(AppWorkspace, ActionType.ActionImageIndex, PdnResources.GetString("Menu.ImageProcessing.boundarydetection.Imageprodex.text")/*;//待修改中文资源-scc备注 20191217*/, (PdnMenuItem)sender).ShowDialog();            }            else                MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));        }        /// <summary>        /// 最大        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void menuImageMax_Click(object sender, EventArgs e)        {            if (AppWorkspace.ActiveDocumentWorkspace != null) {                new InterImageOpDialog(AppWorkspace, ActionType.ActionImageMax, PdnResources.GetString("Menu.Image.Text") + "-" + PdnResources.GetString("Menu.Image.InterImageOperation.Text") + "-" + PdnResources.GetString("Menu.max.text")/*;//待修改中文资源-scc备注 20191217*/, (PdnMenuItem)sender).ShowDialog();            }            else                MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));        }        /// <summary>        /// 最小        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void menuImageMin_Click(object sender, EventArgs e)        {            if (AppWorkspace.ActiveDocumentWorkspace != null) {                new InterImageOpDialog(AppWorkspace, ActionType.ActionImageMin, PdnResources.GetString("Menu.Image.Text") + "-" + PdnResources.GetString("Menu.Image.InterImageOperation.Text") + "-" + PdnResources.GetString("Menu.minimum.text")/*;//待修改中文资源-scc备注 20191217*/, (PdnMenuItem)sender).ShowDialog();            }            else                MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));        }        /// <summary>        /// 图像偏移        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void menuImageShift_Click(object sender, EventArgs e)        {            if (AppWorkspace.ActiveDocumentWorkspace != null)                new BshTransferAdjustDialog(AppWorkspace, ActionType.ActionImageOffset, PdnResources.GetString("Menu.Image.Text")+"-"+ PdnResources.GetString("Menu.Image.ImageShift.Text"), (PdnMenuItem)sender).ShowDialog();            else                MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));        }        /// <summary>        /// 图像拼接        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void menuImageStitching_Click(object sender, EventArgs e)        {            List<List<double>> localxys = new List<List<double>>();            double[] xs = new double[] { 0, 4, 8 };            double[] ys = new double[] { 0, 5, 0 };            double[] zs = new double[] { 8112.3, 7802.525, 8577.95 };            double[] cals = this.PanelFit(xs, ys, zs);            double cala = cals[0];            for (int ix = 0; ix < 9; ix++)            {                List<double> localys = new List<double>();                for (int iy = 0; iy < 6; iy++)                {                    double z = (-cals[0] * ix - cals[1] * iy - cals[3]) / cals[2];                    localys.Add(z - 7);                }                localxys.Add(localys);            }            double zva = localxys[0][0];            //new BshTransferAdjustDialog(AppWorkspace, ActionType.ActionImageStitching, PdnResources.GetString("Menu.Image.Text")+"-"+ PdnResources.GetString("Menu.ImageCollection.ImageStitching.Text")).ShowDialog();            using (ImageMosaicsDialog imageMosaicsDialog = new ImageMosaicsDialog(this.AppWorkspace))            {                imageMosaicsDialog.StartPosition = FormStartPosition.CenterScreen;                imageMosaicsDialog.ShowDialog();            }            if (AppWorkspace.startScriptRecording)            {                AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List<Args>());            }        }        /// <summary>        /// 平面方程拟合,ax+by+cz+d=0,其中a=result[0],b=result[1],c=result[2],d=result[3]        /// </summary>        /// <param name="x"></param>        /// <param name="y"></param>        /// <param name="z"></param>        /// <returns></returns>        private double[] PanelFit(double[] x, double[] y, double[] z)        {            double[] result = new double[4];            int n = x.Length;            double[,] A = new double[n, 3];            double[,] E = new double[n, 1];            for (int i = 0; i < n; i++)            {                A[i, 0] = x[i] - z[i];                A[i, 1] = y[i] - z[i];                A[i, 2] = 1;                E[i, 0] = -z[i];            }            double[,] AT = MatrixInver(A);            double[,] ATxA = MatrixMultiply(AT, A);            double[,] OPPAxTA = MatrixOpp(ATxA);            double[,] OPPATAxAT = MatrixMultiply(OPPAxTA, AT);            double[,] DP = MatrixMultiply(OPPATAxAT, E);            result[0] = DP[0, 0];            result[1] = DP[1, 0];            result[2] = 1 - result[0] - result[1];            result[3] = DP[2, 0];            return result;        }        /// <summary>        /// 矩阵转置        /// </summary>        /// <param name="matrix"></param>        /// <returns></returns>        private double[,] MatrixInver(double[,] matrix)        {            double[,] result = new double[matrix.GetLength(1), matrix.GetLength(0)];            for (int i = 0; i < matrix.GetLength(1); i++)                for (int j = 0; j < matrix.GetLength(0); j++)                    result[i, j] = matrix[j, i];            return result;        }        /// <summary>        /// 矩阵相乘        /// </summary>        /// <param name="matrixA"></param>        /// <param name="matrixB"></param>        /// <returns></returns>        private double[,] MatrixMultiply(double[,] matrixA, double[,] matrixB)        {            double[,] result = new double[matrixA.GetLength(0), matrixB.GetLength(1)];            for (int i = 0; i < matrixA.GetLength(0); i++)            {                for (int j = 0; j < matrixB.GetLength(1); j++)                {                    result[i, j] = 0;                    for (int k = 0; k < matrixB.GetLength(0); k++)                    {                        result[i, j] += matrixA[i, k] * matrixB[k, j];                    }                }            }            return result;        }        /// <summary>        /// 矩阵的逆        /// </summary>        /// <param name="matrix"></param>        /// <returns></returns>        private double[,] MatrixOpp(double[,] matrix)        {            double X = 1 / MatrixSurplus(matrix);            double[,] matrixB = new double[matrix.GetLength(0), matrix.GetLength(1)];            double[,] matrixSP = new double[matrix.GetLength(0), matrix.GetLength(1)];            double[,] matrixAB = new double[matrix.GetLength(0), matrix.GetLength(1)];            for (int i = 0; i < matrix.GetLength(0); i++)                for (int j = 0; j < matrix.GetLength(1); j++)                {                    for (int m = 0; m < matrix.GetLength(0); m++)                        for (int n = 0; n < matrix.GetLength(1); n++)                            matrixB[m, n] = matrix[m, n];                    {                        for (int x = 0; x < matrix.GetLength(1); x++)                            matrixB[i, x] = 0;                        for (int y = 0; y < matrix.GetLength(0); y++)                            matrixB[y, j] = 0;                        matrixB[i, j] = 1;                        matrixSP[i, j] = MatrixSurplus(matrixB);                        matrixAB[i, j] = X * matrixSP[i, j];                    }                }            return MatrixInver(matrixAB);        }        /// <summary>        /// 矩阵的行列式的值          /// </summary>        /// <param name="A"></param>        /// <returns></returns>        public static double MatrixSurplus(double[,] matrix)        {            double X = -1;            double[,] a = matrix;            int i, j, k, p, r, m, n;            m = a.GetLength(0);            n = a.GetLength(1);            double temp = 1, temp1 = 1, s = 0, s1 = 0;            if (n == 2)            {                for (i = 0; i < m; i++)                    for (j = 0; j < n; j++)                        if ((i + j) % 2 > 0) temp1 *= a[i, j];                        else temp *= a[i, j];                X = temp - temp1;            }            else            {                for (k = 0; k < n; k++)                {                    for (i = 0, j = k; i < m && j < n; i++, j++)                        temp *= a[i, j];                    if (m - i > 0)                    {                        for (p = m - i, r = m - 1; p > 0; p--, r--)                            temp *= a[r, p - 1];                    }                    s += temp;                    temp = 1;                }                for (k = n - 1; k >= 0; k--)                {                    for (i = 0, j = k; i < m && j >= 0; i++, j--)                        temp1 *= a[i, j];                    if (m - i > 0)                    {                        for (p = m - 1, r = i; r < m; p--, r++)                            temp1 *= a[r, p];                    }                    s1 += temp1;                    temp1 = 1;                }                X = s - s1;            }            return X;        }        /// <summary>        /// 景深拓展        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void MenuImageDepthExtension_Click(object sender, EventArgs e)        {            if (AppWorkspace.startScriptRecording)            {                AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List<Args>());            }            using (ImageDepthExtensionDialog imageDepthExtensionDialog = new ImageDepthExtensionDialog(this.AppWorkspace))            {                imageDepthExtensionDialog.StartPosition = FormStartPosition.CenterScreen;                imageDepthExtensionDialog.ShowDialog();            }        }        protected override void OnDropDownOpening(EventArgs e)        {            if (AppWorkspace.ActiveDocumentWorkspace == null || AppWorkspace.ScriptRunning)            {                this.menuImageAdjust.Enabled = false;                this.menuImageSharpen.Enabled = false;                this.menuImageSmooth.Enabled = false;                this.menuImageEdgeDetection.Enabled = false;                this.menuImageInterOperation.Enabled = false;                this.menuImageShift.Enabled = false;            }            else            {                this.menuImageAdjust.Enabled = true;                this.menuImageSharpen.Enabled = true;                this.menuImageSmooth.Enabled = true;                this.menuImageEdgeDetection.Enabled = true;                this.menuImageInterOperation.Enabled = true;                this.menuImageShift.Enabled = true;            }            this.menuImageStitching.Enabled = !AppWorkspace.ScriptRunning;            this.menuImageDepthExtension.Enabled = !AppWorkspace.ScriptRunning;            base.OnDropDownOpening(e);        }    }}
 |