From 22ff831583da8c6f1c015c1e294f0bc1ef70ac85 Mon Sep 17 00:00:00 2001
From: C3031 <shitiangui@lanpucloud.cn>
Date: 星期五, 30 一月 2026 09:23:14 +0800
Subject: [PATCH] 

---
 LB_VisionProcesses/ProcessEditForm.cs                                                               |    2 
 LB_VisionProcesses/Alogrithms/Halcon/2D/HImageEnhancementTool/HImageEnhancementTool.cs              |   12 
 LB_SmartVision/VisionForm.resx                                                                      |   36 
 LB_VisionProcesses/Alogrithms/Halcon/2D/HImageEnhancementTool/HImageEnhancementToolEdit.resx        |    7 
 LB_VisionProcesses/Alogrithms/Halcon/2D/HFindLineTool/HFindLineToolEdit.Designer.cs                 |   48 +-
 LB_VisionProcesses/Alogrithms/BaseAlgorithm/TAlgorithm.cs                                           |   51 --
 LB_VisionProcesses/Alogrithms/Halcon/2D/HImageEnhancementTool/HImageEnhancementToolEdit.cs          |  454 +++++++++++++++++++++++
 LB_VisionProcesses/Alogrithms/Halcon/2D/HImageEnhancementTool/HImageEnhancementToolEdit.Designer.cs |  498 ++++++++++----------------
 LB_SmartVision/VisionForm.Designer.cs                                                               |   10 
 9 files changed, 706 insertions(+), 412 deletions(-)

diff --git a/LB_SmartVision/VisionForm.Designer.cs b/LB_SmartVision/VisionForm.Designer.cs
index ef45a32..9e00b0c 100644
--- a/LB_SmartVision/VisionForm.Designer.cs
+++ b/LB_SmartVision/VisionForm.Designer.cs
@@ -89,7 +89,7 @@
             // 
             sc_VisionForm.Panel2.Controls.Add(grb_Info);
             sc_VisionForm.Size = new Size(1416, 781);
-            sc_VisionForm.SplitterDistance = 592;
+            sc_VisionForm.SplitterDistance = 591;
             sc_VisionForm.SplitterWidth = 5;
             sc_VisionForm.TabIndex = 1;
             // 
@@ -108,7 +108,7 @@
             tlp_MainView.RowStyles.Add(new RowStyle(SizeType.Absolute, 60F));
             tlp_MainView.RowStyles.Add(new RowStyle(SizeType.Absolute, 39F));
             tlp_MainView.RowStyles.Add(new RowStyle(SizeType.Percent, 100F));
-            tlp_MainView.Size = new Size(1416, 592);
+            tlp_MainView.Size = new Size(1416, 591);
             tlp_MainView.TabIndex = 1;
             tlp_MainView.TagString = null;
             // 
@@ -122,7 +122,7 @@
             materialTabControl.MouseState = MaterialSkin.MouseState.HOVER;
             materialTabControl.Name = "materialTabControl";
             materialTabControl.SelectedIndex = 0;
-            materialTabControl.Size = new Size(1412, 489);
+            materialTabControl.Size = new Size(1412, 488);
             materialTabControl.TabIndex = 0;
             // 
             // tlp_VisionMainOperator
@@ -249,7 +249,7 @@
             grb_Info.MinimumSize = new Size(1, 1);
             grb_Info.Name = "grb_Info";
             grb_Info.Padding = new Padding(0, 40, 0, 0);
-            grb_Info.Size = new Size(1416, 184);
+            grb_Info.Size = new Size(1416, 185);
             grb_Info.TabIndex = 1;
             grb_Info.Text = "鏃ュ織鏄剧ず鍖猴細";
             grb_Info.TextAlignment = ContentAlignment.MiddleLeft;
@@ -265,7 +265,7 @@
             rich_Info.Name = "rich_Info";
             rich_Info.Padding = new Padding(2);
             rich_Info.ShowText = false;
-            rich_Info.Size = new Size(1416, 144);
+            rich_Info.Size = new Size(1416, 145);
             rich_Info.TabIndex = 0;
             rich_Info.TextAlignment = ContentAlignment.MiddleLeft;
             // 
diff --git a/LB_SmartVision/VisionForm.resx b/LB_SmartVision/VisionForm.resx
index 5e25f3c..a47feae 100644
--- a/LB_SmartVision/VisionForm.resx
+++ b/LB_SmartVision/VisionForm.resx
@@ -121,24 +121,24 @@
   <data name="theme_VisionForm.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
-        vAAADrwBlbxySQAAA+JJREFUWEftVkuIHGUQbt34iMEoq2S2q3p3yTJsuqpnJ+L6WBRdwaigohfFgEou
-        BkVBUPCBCEG8BXNQ48GLeImCehIJxMsqhsSZruod46K4HtSIGjU+4iOr0c1I9fSsM3/PLNtCPO0H36m/
-        evz/X11VnreKVRTAHPOZumkY6lFwqURws3BwZ8ywTQnuiCP/+iTCzY1qaUPzdm/Atf3PaHre6XPsjyQM
-        2xLGV4XwIyX4QRj+UMK/lPFvJTyhBMeV8IgQvmRJuH4Ko+l5p9UjGBbCJ5RxTgj+VMZmXxKcSAjekHE/
-        NNs5DgaTKLinEQYVO4Trf1mkV81wixLUslPmA3bzF2XcKeP+hWY/u3n0fCXcrQwLyjAvjNsb1dI6N05P
-        mFAIHlHG73sEypPgGwnhfpn0zzH7jzddcK4Q7kqfKNMI4a9K+MwBDgbdeF04MBWsFYYdQvhbLlBvfhKT
-        f+vMtLfG7C0JJXxKGY67WnvCmPAFGRs7z42boul5AzHBfdK6TjdQtzPGk8oos5F/5Y7sfVvPhg+lp+1h
-        0yIsxARPmtaN78WEl8eEX+SNclxUhne0glUrNrN9zfMGlPAuZTzaQ99FYfwuDv3ruoLvq5bWaQSvZCfL
-        GXUYLwrj240Qxtu2lkSN4FpdWfKZH9jb9RQ1Cq62f9sVOlxUxn3KQXnJ0PO8QxU/jBm1h74v7ZniEG9K
-        Hdg/quzvXO709k0Y3u08ucGqWgheX862H4XgxbR47SqU8D1X0EXC2VmGizqDz0xPr0kYH9eO360gNe0b
-        jWppozB+1kOQEb5MCLa0C64NoeGrhOGrvH6lhK81GiIvnggmrDLzgvTkvwvDA+5wsU4nhG/m9AUoBD/F
-        HFzWN4H0XQn2vF8eXN8Z3FAPYasl59oUYjuB+sTImDB+nhfgYQ39STf4fmu1DHtz+oIUgiM1KkWtwcFw
-        sOujVT3hrnaL7UQc+hcL5W+sKIXhw0OVjaW0iwnBc47gqIQ45QY32PKRzv8eTguRYM9SS5YouEEZjv37
-        EffbzbjBDdZyxZYQ12EB2qS0bWrJqRVazPDWkojwZbuZrsgZtDJ0iY1g12khEtTicMTvclwn2CKE32YJ
-        7G5PORfZ1HtMCH7MOV4BrQ3XCe92+4onk5Nn2PolDAvWXnuOzAwzo6Nnx4Q3SrojwqfKeMxWMpsXWVs+
-        2WrfKRdbW1W6Hf0shM/33Y7my4PrleFZIfhAaWjU/e5ivlw+y3S2FySMtynjvcrwsFiLJv/RhPBB2ws1
-        hK2WcBLBFf1qawlplwvxaQlxe786OOU4PBWsjSO85mBlQ8n99r/BisSdAas4FfgHpdEUZpwUX7sAAAAA
-        SUVORK5CYII=
+        vAAADrwBlbxySQAAA+xJREFUWEftV0loFUkYbvcNFzJi0lWdBEPQruqXKEYdcRgz4AYqeplBwYiXEUVB
+        UHAhCEG8iR509OBlmIsOjJ5EBvQSRVHzuvslxjAy8eCG+75GozF+f716L6873fqe2ykffDR59e9/1V8V
+        ow99KARtUg72J5aypGNN8xy2yJPWcleylb5gS13HnJdy+KSW6uJx3b8ZA7TKl6PbMPq3SbMsBUcpyf/2
+        BP8PDh96kr32BX/rS/4O30789grfO1j/k4LQ6p8POO6XdFgpDNbDSZsn2Bt8u2MpWGdKsCPeBNMm3TZp
+        FaUc6/cW20pQEtpsflCllmwxjDbpLKOd9vAZuBPOx5J+86TyMdDbBxsdYLsn+SpUZYQy/imQILLdBIP3
+        cxzEU7Dbns3WejXmcNK/NPGHkajabtUiLYO/nyOgXWdRFeUkDmdnWMOg2ACFFwEn8fzfFeaSxlpjIOlT
+        EHC0HVm/CstSC13B93sVFaOVszDQpwGuYGtQLipnQDlMyLzH12t2zJ8adH/TbeMbVLYROmmyDvjYRrLK
+        aS4Q3Y/gtWjFALtg6KSf4NW02Uj3HwSPzOuw9iAk24sI/p5rm3OV0wyOo+++ww7pzCIViVjvAk+02GyC
+        VlWnpUmw2Qggn+AV0eZ/A61oEtYsOttRwjlE5vy4L61KrabQmjBtV3I/JPtRUptcmy9UBuiM+tLc+bHs
+        aQ1Rn8rNnEC7Gpvr8KcqF0XoHVCbl0qB8p2OEspS8OZmySZrvwqNtbUDMRm3Yj9kj1uB9NXcwLkfjwyu
+        RAhoshuYcHMyGy4DT5T+jKrcjNbJh+yW75QIw62yqhDAvUghwV/Cybrw5UKTDn08GqmTJ9GCx660pscG
+        oPoq2MHzlUWjtN8skjZbRsGFdQpiJoBkVVkFnF3tLcCv+7ZZo31mcYZGLY5RL/kCiQrcaRLFTvrikOxc
+        YJF2PeZ5ZsTmAkNkCtaiW1YAkcTF1sT4YjXFEM3ekMADz+YztM8AULqlqE5nSL5wor3Zkew51nxU4WnP
+        Ij9DlVGLIWCtDhV6FzBWIJH9a3pNaZOGQRsNT6tjWSHB/6LK6OUA/ETJVER/O9dgwcQ7w7XLTG0yjSTO
+        Onp7Ny3A92VuuTD0rbcFbXsUMJonaQwnBV8Rniu4y2sGYbEe5emA8cORV6ZGY3n5UNycC9AKvBHZZRh+
+        iqxoX9BlRWMZozvLLiSEV5V6HT2Bjz9iX0ftaAWE9sDoBV+UlOufY9FeWTmE5OhdgLH8Kxyvhv5GON3q
+        C3NzSvD19C70MTco4JTDZsbtrSzUlLP5DnBV3D745riOp5nr8F/OJcYV65++P2iTfNV/MPoQCcP4AKXR
+        FGYxo/VGAAAAAElFTkSuQmCC
 </value>
   </data>
   <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
diff --git a/LB_VisionProcesses/Alogrithms/BaseAlgorithm/TAlgorithm.cs b/LB_VisionProcesses/Alogrithms/BaseAlgorithm/TAlgorithm.cs
index 9ae365b..79f6ebe 100644
--- a/LB_VisionProcesses/Alogrithms/BaseAlgorithm/TAlgorithm.cs
+++ b/LB_VisionProcesses/Alogrithms/BaseAlgorithm/TAlgorithm.cs
@@ -3843,7 +3843,7 @@
         /// <param name="hv_Column1">璧峰妯潗鏍�</param>
         /// <param name="hv_Row2">缁撴潫绾靛潗鏍�</param>
         /// <param name="hv_Column2">缁撴潫妯潗鏍�</param>
-        public static void Emphsize(HObject ho_Image, out HObject ho_OutImage, HTuple hv_ImageEnhancementType, HTuple hv_Wid, HTuple hv_High, HTuple hv_Fac)
+        public static void ImageEnhancement(HObject ho_Image, out HObject ho_OutImage, HTuple hv_ImageEnhancementType, HTuple hv_Wid, HTuple hv_High, HTuple hv_Fac)
         {
             HOperatorSet.GenEmptyObj(out ho_OutImage);
             try
@@ -3867,19 +3867,14 @@
                 {
                     hv_ImageEnhancementTypeOut.Dispose();
                     hv_ImageEnhancementTypeOut = "equHisto";
-
+                    HOperatorSet.ScaleImageMax(ho_Image, out ho_OutImage);
                 }
                 else
                 {
                     hv_ImageEnhancementTypeOut.Dispose();
                     hv_ImageEnhancementTypeOut = "scaleMax";
+                    HOperatorSet.EquHistoImage(ho_Image, out ho_OutImage);
                 }
-
-
-
-                HOperatorSet.EquHistoImage(ho_Image, out ho_OutImage);
-
-
                 return;
             }
             catch (HalconException HDevExpDefaultException)
@@ -3891,45 +3886,7 @@
                 throw HDevExpDefaultException;
             }
         }
-        /// <summary>
-        /// 鍥惧儚澧炲己绠楁硶-姣斾緥澧炲己
-        /// </summary>
-        /// <param name="ho_Image">寰呮祴鍥剧墖</param>
-        /// <param name="hv_Wid">鎺╄啘瀹�</param>
-        public static void ScaleImageMax(HObject ho_Image, out HObject ho_OutImage)
-        {
-            HOperatorSet.GenEmptyObj(out ho_OutImage);
-            try
-            {
-                ho_OutImage.Dispose();
-                HOperatorSet.ScaleImageMax(ho_Image, out ho_OutImage);
-                return;
-            }
-            catch (HalconException HDevExpDefaultException)
-            {
-                throw HDevExpDefaultException;
-            }
-        }
-        /// <summary>
-        /// 鍥惧儚澧炲己绠楁硶-鐩存柟鍥惧潎琛″寲
-        /// </summary>
-        /// <param name="ho_Image">寰呮祴鍥剧墖</param>
-        /// <param name="hv_Wid">鎺╄啘瀹�</param>
-        public static void EquHistoImage(HObject ho_Image, out HObject ho_OutImage)
-        {
-            HOperatorSet.GenEmptyObj(out ho_OutImage);
-            try
-            {
-                ho_OutImage.Dispose();
-                HOperatorSet.EquHistoImage(ho_Image, out ho_OutImage);
-                return;
-            }
-            catch (HalconException HDevExpDefaultException)
-            {
-                throw HDevExpDefaultException;
-            }
-        }
-
+       
         /// <summary>
         /// 鍗″昂绠楁硶
         /// </summary>
diff --git a/LB_VisionProcesses/Alogrithms/Halcon/2D/HFindLineTool/HFindLineToolEdit.Designer.cs b/LB_VisionProcesses/Alogrithms/Halcon/2D/HFindLineTool/HFindLineToolEdit.Designer.cs
index 5c7def3..0bc2d0d 100644
--- a/LB_VisionProcesses/Alogrithms/Halcon/2D/HFindLineTool/HFindLineToolEdit.Designer.cs
+++ b/LB_VisionProcesses/Alogrithms/Halcon/2D/HFindLineTool/HFindLineToolEdit.Designer.cs
@@ -302,7 +302,7 @@
             // 
             cmbTransition.FormattingEnabled = true;
             cmbTransition.Location = new Point(120, 184);
-            cmbTransition.Margin = new Padding(4, 4, 4, 4);
+            cmbTransition.Margin = new Padding(4);
             cmbTransition.Name = "cmbTransition";
             cmbTransition.Size = new Size(130, 28);
             cmbTransition.TabIndex = 13;
@@ -311,7 +311,7 @@
             // 
             cmbSelect.FormattingEnabled = true;
             cmbSelect.Location = new Point(376, 184);
-            cmbSelect.Margin = new Padding(4, 4, 4, 4);
+            cmbSelect.Margin = new Padding(4);
             cmbSelect.Name = "cmbSelect";
             cmbSelect.Size = new Size(131, 28);
             cmbSelect.TabIndex = 14;
@@ -320,7 +320,7 @@
             // 
             btnShowROI.Dock = DockStyle.Fill;
             btnShowROI.Location = new Point(4, 244);
-            btnShowROI.Margin = new Padding(4, 4, 4, 4);
+            btnShowROI.Margin = new Padding(4);
             btnShowROI.Name = "btnShowROI";
             btnShowROI.Size = new Size(108, 52);
             btnShowROI.TabIndex = 15;
@@ -332,7 +332,7 @@
             // 
             pnlInputImage.Dock = DockStyle.Fill;
             pnlInputImage.Location = new Point(4, 4);
-            pnlInputImage.Margin = new Padding(5, 5, 5, 5);
+            pnlInputImage.Margin = new Padding(5);
             pnlInputImage.Name = "pnlInputImage";
             pnlInputImage.Size = new Size(782, 603);
             pnlInputImage.TabIndex = 44;
@@ -418,7 +418,7 @@
             MainTableLayoutPanel.Controls.Add(imgTabControl, 1, 0);
             MainTableLayoutPanel.Dock = DockStyle.Fill;
             MainTableLayoutPanel.Location = new Point(0, 27);
-            MainTableLayoutPanel.Margin = new Padding(4, 4, 4, 4);
+            MainTableLayoutPanel.Margin = new Padding(4);
             MainTableLayoutPanel.Name = "MainTableLayoutPanel";
             MainTableLayoutPanel.RowCount = 1;
             MainTableLayoutPanel.RowStyles.Add(new RowStyle(SizeType.Percent, 100F));
@@ -432,7 +432,7 @@
             parasTabControl.Controls.Add(tabPage2);
             parasTabControl.Dock = DockStyle.Fill;
             parasTabControl.Location = new Point(4, 4);
-            parasTabControl.Margin = new Padding(4, 4, 4, 4);
+            parasTabControl.Margin = new Padding(4);
             parasTabControl.Name = "parasTabControl";
             parasTabControl.SelectedIndex = 0;
             parasTabControl.Size = new Size(528, 644);
@@ -442,9 +442,9 @@
             // 
             tabPage1.Controls.Add(tablePanelParas);
             tabPage1.Location = new Point(4, 29);
-            tabPage1.Margin = new Padding(4, 4, 4, 4);
+            tabPage1.Margin = new Padding(4);
             tabPage1.Name = "tabPage1";
-            tabPage1.Padding = new Padding(4, 4, 4, 4);
+            tabPage1.Padding = new Padding(4);
             tabPage1.Size = new Size(520, 611);
             tabPage1.TabIndex = 0;
             tabPage1.Text = "杈撳叆鍙傛暟";
@@ -454,7 +454,7 @@
             // 
             tabPage5.Controls.Add(tableLayoutPanel2);
             tabPage5.Location = new Point(4, 29);
-            tabPage5.Margin = new Padding(4, 4, 4, 4);
+            tabPage5.Margin = new Padding(4);
             tabPage5.Name = "tabPage5";
             tabPage5.Size = new Size(520, 611);
             tabPage5.TabIndex = 2;
@@ -474,7 +474,7 @@
             tableLayoutPanel2.Controls.Add(cmbFixture, 1, 1);
             tableLayoutPanel2.Controls.Add(ckbDrawRoi, 2, 0);
             tableLayoutPanel2.Location = new Point(4, 4);
-            tableLayoutPanel2.Margin = new Padding(4, 4, 4, 4);
+            tableLayoutPanel2.Margin = new Padding(4);
             tableLayoutPanel2.Name = "tableLayoutPanel2";
             tableLayoutPanel2.RowCount = 8;
             tableLayoutPanel2.RowStyles.Add(new RowStyle(SizeType.Absolute, 35F));
@@ -493,7 +493,7 @@
             cmbTypeRoi.Enabled = false;
             cmbTypeRoi.FormattingEnabled = true;
             cmbTypeRoi.Location = new Point(81, 4);
-            cmbTypeRoi.Margin = new Padding(4, 4, 4, 4);
+            cmbTypeRoi.Margin = new Padding(4);
             cmbTypeRoi.Name = "cmbTypeRoi";
             cmbTypeRoi.Size = new Size(154, 28);
             cmbTypeRoi.TabIndex = 1;
@@ -527,7 +527,7 @@
             // 
             cmbFixture.FormattingEnabled = true;
             cmbFixture.Location = new Point(81, 39);
-            cmbFixture.Margin = new Padding(4, 4, 4, 4);
+            cmbFixture.Margin = new Padding(4);
             cmbFixture.Name = "cmbFixture";
             cmbFixture.Size = new Size(154, 28);
             cmbFixture.TabIndex = 5;
@@ -538,7 +538,7 @@
             ckbDrawRoi.AutoSize = true;
             ckbDrawRoi.CheckAlign = ContentAlignment.MiddleCenter;
             ckbDrawRoi.Location = new Point(274, 4);
-            ckbDrawRoi.Margin = new Padding(4, 4, 4, 4);
+            ckbDrawRoi.Margin = new Padding(4);
             ckbDrawRoi.Name = "ckbDrawRoi";
             ckbDrawRoi.Size = new Size(18, 17);
             ckbDrawRoi.TabIndex = 2;
@@ -549,9 +549,9 @@
             // 
             tabPage2.Controls.Add(tableLayoutResults);
             tabPage2.Location = new Point(4, 29);
-            tabPage2.Margin = new Padding(4, 4, 4, 4);
+            tabPage2.Margin = new Padding(4);
             tabPage2.Name = "tabPage2";
-            tabPage2.Padding = new Padding(4, 4, 4, 4);
+            tabPage2.Padding = new Padding(4);
             tabPage2.Size = new Size(520, 611);
             tabPage2.TabIndex = 1;
             tabPage2.Text = "杈撳嚭缁撴灉";
@@ -723,7 +723,7 @@
             // 
             dtxtCount.Dock = DockStyle.Fill;
             dtxtCount.Location = new Point(133, 304);
-            dtxtCount.Margin = new Padding(4, 4, 4, 4);
+            dtxtCount.Margin = new Padding(4);
             dtxtCount.Name = "dtxtCount";
             dtxtCount.ReadOnly = true;
             dtxtCount.Size = new Size(375, 27);
@@ -735,7 +735,7 @@
             imgTabControl.Controls.Add(tabPageRecordImage);
             imgTabControl.Dock = DockStyle.Fill;
             imgTabControl.Location = new Point(540, 4);
-            imgTabControl.Margin = new Padding(4, 4, 4, 4);
+            imgTabControl.Margin = new Padding(4);
             imgTabControl.Name = "imgTabControl";
             imgTabControl.SelectedIndex = 0;
             imgTabControl.Size = new Size(798, 644);
@@ -745,9 +745,9 @@
             // 
             tabPageInputImage.Controls.Add(pnlInputImage);
             tabPageInputImage.Location = new Point(4, 29);
-            tabPageInputImage.Margin = new Padding(4, 4, 4, 4);
+            tabPageInputImage.Margin = new Padding(4);
             tabPageInputImage.Name = "tabPageInputImage";
-            tabPageInputImage.Padding = new Padding(4, 4, 4, 4);
+            tabPageInputImage.Padding = new Padding(4);
             tabPageInputImage.Size = new Size(790, 611);
             tabPageInputImage.TabIndex = 0;
             tabPageInputImage.Text = "杈撳叆鍥惧儚";
@@ -757,10 +757,10 @@
             // 
             tabPageRecordImage.Controls.Add(pnlRecordImage);
             tabPageRecordImage.Location = new Point(4, 29);
-            tabPageRecordImage.Margin = new Padding(4, 4, 4, 4);
+            tabPageRecordImage.Margin = new Padding(4);
             tabPageRecordImage.Name = "tabPageRecordImage";
-            tabPageRecordImage.Padding = new Padding(4, 4, 4, 4);
-            tabPageRecordImage.Size = new Size(790, 609);
+            tabPageRecordImage.Padding = new Padding(4);
+            tabPageRecordImage.Size = new Size(790, 611);
             tabPageRecordImage.TabIndex = 1;
             tabPageRecordImage.Text = "缁撴灉鍥惧儚";
             tabPageRecordImage.UseVisualStyleBackColor = true;
@@ -769,9 +769,9 @@
             // 
             pnlRecordImage.Dock = DockStyle.Fill;
             pnlRecordImage.Location = new Point(4, 4);
-            pnlRecordImage.Margin = new Padding(5, 5, 5, 5);
+            pnlRecordImage.Margin = new Padding(5);
             pnlRecordImage.Name = "pnlRecordImage";
-            pnlRecordImage.Size = new Size(782, 601);
+            pnlRecordImage.Size = new Size(782, 603);
             pnlRecordImage.TabIndex = 45;
             // 
             // HFindLineToolEdit
diff --git a/LB_VisionProcesses/Alogrithms/Halcon/2D/HImageEnhancementTool/HImageEnhancementTool.cs b/LB_VisionProcesses/Alogrithms/Halcon/2D/HImageEnhancementTool/HImageEnhancementTool.cs
index 1d47cbb..48d4e46 100644
--- a/LB_VisionProcesses/Alogrithms/Halcon/2D/HImageEnhancementTool/HImageEnhancementTool.cs
+++ b/LB_VisionProcesses/Alogrithms/Halcon/2D/HImageEnhancementTool/HImageEnhancementTool.cs
@@ -7,12 +7,12 @@
 using System.Threading.Tasks;
 using static System.Runtime.InteropServices.JavaScript.JSType;
 
-namespace LB_VisionProcesses.Alogrithms.Halcon._2D.HEdgeExtraction
+namespace LB_VisionProcesses.Alogrithms.Halcon
 {
     public enum ImageEnhancementType { Emphasize, EquHisto, ScaleMax }
 
     [Process("Halcon鍥惧儚澧炲己", Category = "Halcon2D宸ュ叿", Description = "鍒涘缓鍥惧儚澧炲己宸ュ叿")]
-    internal class HImageEnhancementTool : TAlgorithm
+    public class HImageEnhancementTool : TAlgorithm
     {
         public HImageEnhancementTool()
         {
@@ -20,9 +20,9 @@
             strProcessName = "Halcon鍥惧儚澧炲己宸ュ叿";
 
             Params.Inputs.Add("婊ゆ尝鍣ㄧ被鍨�", "杈圭紭澧炲己");
-            Params.Inputs.Add("鎺╄啘瀹�", 2.0);
-            Params.Inputs.Add("鎺╄啘楂�", 10);
-            Params.Inputs.Add("澧炲己鍥犲瓙", 20);
+            Params.Inputs.Add("鎺╄啘瀹�", 1);
+            Params.Inputs.Add("鎺╄啘楂�", 1);
+            Params.Inputs.Add("澧炲己鍥犲瓙", 1.0);
             //emphasize(Image : ImageEmphasize : MaskWidth, MaskHeight, Factor : )
 
             Params.Inputs.Add("婊ゆ尝鍣ㄧ被鍨�", "鐩存柟鍥惧潎琛″寲");
@@ -129,7 +129,7 @@
                 double hv_Row2 = Convert.ToDouble(((HSegment)Params.ROI).EndRow + Params.Fixture.Row);
                 double hv_Column2 = Convert.ToDouble(((HSegment)Params.ROI).EndColumn + Params.Fixture.Column);
 
-                Emphsize(hoDomainImage, out ho_Regions, hv_Column1, hv_Row2, hv_Column2);
+                ImageEnhancement(hoDomainImage, out ho_Regions, hv_ImageEnhancementType, hv_Column1, hv_Row2, hv_Column2);
                 #endregion
 
 
diff --git a/LB_VisionProcesses/Alogrithms/Halcon/2D/HImageEnhancementTool/HImageEnhancementToolEdit.Designer.cs b/LB_VisionProcesses/Alogrithms/Halcon/2D/HImageEnhancementTool/HImageEnhancementToolEdit.Designer.cs
index 28aea30..585d5f1 100644
--- a/LB_VisionProcesses/Alogrithms/Halcon/2D/HImageEnhancementTool/HImageEnhancementToolEdit.Designer.cs
+++ b/LB_VisionProcesses/Alogrithms/Halcon/2D/HImageEnhancementTool/HImageEnhancementToolEdit.Designer.cs
@@ -1,6 +1,6 @@
 锘縰sing LB_VisionProcesses.Alogrithms;
 
-namespace LB_VisionProcesses.Alogrithms.Halcon._2D.HEdgeExtractionTool
+namespace LB_VisionProcesses.Alogrithms.Halcon
 {
     partial class HImageEnhancementToolEdit
     {
@@ -43,6 +43,20 @@
             MainTableLayoutPanel = new TableLayoutPanel();
             parasTabControl = new TabControl();
             tabPage1 = new TabPage();
+            tableLayoutPanel1 = new TableLayoutPanel();
+            dataGridViewIE = new DataGridView();
+            tableLayoutPanel4 = new TableLayoutPanel();
+            tableLayoutPanel3 = new TableLayoutPanel();
+            cmbImageEnhancement = new ComboBox();
+            btnAdd = new Button();
+            labelImageEnhancement = new Label();
+            tableLayoutPanel5 = new TableLayoutPanel();
+            labelMaskWidth = new Label();
+            labelMaskHeight = new Label();
+            labelFactor = new Label();
+            txtMaskWidth = new TextBox();
+            txtMaskHeight = new TextBox();
+            txtFactor = new TextBox();
             tabPage5 = new TabPage();
             tableLayoutPanel2 = new TableLayoutPanel();
             cmbTypeRoi = new ComboBox();
@@ -50,45 +64,25 @@
             label22 = new Label();
             cmbFixture = new ComboBox();
             ckbDrawRoi = new CheckBox();
-            tabPage2 = new TabPage();
-            tableLayoutResults = new TableLayoutPanel();
-            dtxtHeight = new TextBox();
-            label9 = new Label();
-            label5 = new Label();
-            label6 = new Label();
-            label7 = new Label();
-            label8 = new Label();
-            dtxtCenterX = new TextBox();
-            dtxtCenterY = new TextBox();
-            dtxtAngle = new TextBox();
-            dtxtWidth = new TextBox();
-            label18 = new Label();
-            dtxtCount = new TextBox();
             imgTabControl = new TabControl();
             tabPageInputImage = new TabPage();
             tabPageRecordImage = new TabPage();
             pnlRecordImage = new Panel();
-            tableLayoutPanel1 = new TableLayoutPanel();
-            tableLayoutPanel3 = new TableLayoutPanel();
-            label14 = new Label();
-            cmbImageEnhancement = new ComboBox();
-            button1 = new Button();
-            dataGridView1 = new DataGridView();
             TopToolStrip.SuspendLayout();
             BtmStatusStrip.SuspendLayout();
             MainTableLayoutPanel.SuspendLayout();
             parasTabControl.SuspendLayout();
             tabPage1.SuspendLayout();
+            tableLayoutPanel1.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)dataGridViewIE).BeginInit();
+            tableLayoutPanel4.SuspendLayout();
+            tableLayoutPanel3.SuspendLayout();
+            tableLayoutPanel5.SuspendLayout();
             tabPage5.SuspendLayout();
             tableLayoutPanel2.SuspendLayout();
-            tabPage2.SuspendLayout();
-            tableLayoutResults.SuspendLayout();
             imgTabControl.SuspendLayout();
             tabPageInputImage.SuspendLayout();
             tabPageRecordImage.SuspendLayout();
-            tableLayoutPanel1.SuspendLayout();
-            tableLayoutPanel3.SuspendLayout();
-            ((System.ComponentModel.ISupportInitialize)dataGridView1).BeginInit();
             SuspendLayout();
             // 
             // pnlInputImage
@@ -188,7 +182,6 @@
             // 
             parasTabControl.Controls.Add(tabPage1);
             parasTabControl.Controls.Add(tabPage5);
-            parasTabControl.Controls.Add(tabPage2);
             parasTabControl.Dock = DockStyle.Fill;
             parasTabControl.Location = new Point(4, 4);
             parasTabControl.Margin = new Padding(4);
@@ -208,6 +201,161 @@
             tabPage1.TabIndex = 0;
             tabPage1.Text = "杈撳叆鍙傛暟";
             tabPage1.UseVisualStyleBackColor = true;
+            // 
+            // tableLayoutPanel1
+            // 
+            tableLayoutPanel1.ColumnCount = 1;
+            tableLayoutPanel1.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100F));
+            tableLayoutPanel1.Controls.Add(dataGridViewIE, 0, 1);
+            tableLayoutPanel1.Controls.Add(tableLayoutPanel4, 0, 0);
+            tableLayoutPanel1.Dock = DockStyle.Fill;
+            tableLayoutPanel1.Location = new Point(4, 4);
+            tableLayoutPanel1.Name = "tableLayoutPanel1";
+            tableLayoutPanel1.RowCount = 2;
+            tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Absolute, 135F));
+            tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Percent, 100F));
+            tableLayoutPanel1.Size = new Size(512, 603);
+            tableLayoutPanel1.TabIndex = 1;
+            // 
+            // dataGridViewIE
+            // 
+            dataGridViewIE.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+            dataGridViewIE.Location = new Point(3, 138);
+            dataGridViewIE.Name = "dataGridViewIE";
+            dataGridViewIE.RowHeadersWidth = 51;
+            dataGridViewIE.Size = new Size(506, 462);
+            dataGridViewIE.TabIndex = 2;
+            // 
+            // tableLayoutPanel4
+            // 
+            tableLayoutPanel4.ColumnCount = 1;
+            tableLayoutPanel4.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100F));
+            tableLayoutPanel4.Controls.Add(tableLayoutPanel3, 0, 0);
+            tableLayoutPanel4.Controls.Add(tableLayoutPanel5, 0, 1);
+            tableLayoutPanel4.Location = new Point(3, 3);
+            tableLayoutPanel4.Name = "tableLayoutPanel4";
+            tableLayoutPanel4.RowCount = 2;
+            tableLayoutPanel4.RowStyles.Add(new RowStyle(SizeType.Absolute, 45F));
+            tableLayoutPanel4.RowStyles.Add(new RowStyle(SizeType.Percent, 100F));
+            tableLayoutPanel4.Size = new Size(506, 125);
+            tableLayoutPanel4.TabIndex = 3;
+            // 
+            // tableLayoutPanel3
+            // 
+            tableLayoutPanel3.ColumnCount = 3;
+            tableLayoutPanel3.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 125F));
+            tableLayoutPanel3.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100F));
+            tableLayoutPanel3.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 125F));
+            tableLayoutPanel3.Controls.Add(cmbImageEnhancement, 1, 0);
+            tableLayoutPanel3.Controls.Add(btnAdd, 2, 0);
+            tableLayoutPanel3.Controls.Add(labelImageEnhancement, 0, 0);
+            tableLayoutPanel3.Location = new Point(3, 3);
+            tableLayoutPanel3.Name = "tableLayoutPanel3";
+            tableLayoutPanel3.RowCount = 1;
+            tableLayoutPanel3.RowStyles.Add(new RowStyle(SizeType.Percent, 100F));
+            tableLayoutPanel3.Size = new Size(500, 38);
+            tableLayoutPanel3.TabIndex = 1;
+            // 
+            // cmbImageEnhancement
+            // 
+            cmbImageEnhancement.FormattingEnabled = true;
+            cmbImageEnhancement.Location = new Point(129, 4);
+            cmbImageEnhancement.Margin = new Padding(4);
+            cmbImageEnhancement.Name = "cmbImageEnhancement";
+            cmbImageEnhancement.Size = new Size(242, 28);
+            cmbImageEnhancement.TabIndex = 14;
+            cmbImageEnhancement.SelectedIndexChanged += cmbImageEnhancement_SelectedIndexChanged;
+            // 
+            // btnAdd
+            // 
+            btnAdd.Location = new Point(378, 3);
+            btnAdd.Name = "btnAdd";
+            btnAdd.Size = new Size(119, 30);
+            btnAdd.TabIndex = 15;
+            btnAdd.Text = "娣诲姞";
+            btnAdd.UseVisualStyleBackColor = true;
+            btnAdd.Click += btnAdd_Click;
+            // 
+            // labelImageEnhancement
+            // 
+            labelImageEnhancement.AutoSize = true;
+            labelImageEnhancement.Location = new Point(3, 0);
+            labelImageEnhancement.MaximumSize = new Size(0, 33);
+            labelImageEnhancement.MinimumSize = new Size(0, 33);
+            labelImageEnhancement.Name = "labelImageEnhancement";
+            labelImageEnhancement.Size = new Size(69, 33);
+            labelImageEnhancement.TabIndex = 1;
+            labelImageEnhancement.Text = "婊ゆ尝绫诲瀷";
+            labelImageEnhancement.TextAlign = ContentAlignment.MiddleCenter;
+            // 
+            // tableLayoutPanel5
+            // 
+            tableLayoutPanel5.ColumnCount = 4;
+            tableLayoutPanel5.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 25F));
+            tableLayoutPanel5.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 25F));
+            tableLayoutPanel5.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 25F));
+            tableLayoutPanel5.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 25F));
+            tableLayoutPanel5.Controls.Add(labelMaskWidth, 0, 0);
+            tableLayoutPanel5.Controls.Add(labelMaskHeight, 2, 0);
+            tableLayoutPanel5.Controls.Add(labelFactor, 0, 1);
+            tableLayoutPanel5.Controls.Add(txtMaskWidth, 1, 0);
+            tableLayoutPanel5.Controls.Add(txtMaskHeight, 3, 0);
+            tableLayoutPanel5.Controls.Add(txtFactor, 1, 1);
+            tableLayoutPanel5.Location = new Point(3, 48);
+            tableLayoutPanel5.Name = "tableLayoutPanel5";
+            tableLayoutPanel5.RowCount = 2;
+            tableLayoutPanel5.RowStyles.Add(new RowStyle(SizeType.Percent, 50F));
+            tableLayoutPanel5.RowStyles.Add(new RowStyle(SizeType.Percent, 50F));
+            tableLayoutPanel5.Size = new Size(500, 74);
+            tableLayoutPanel5.TabIndex = 2;
+            // 
+            // labelMaskWidth
+            // 
+            labelMaskWidth.AutoSize = true;
+            labelMaskWidth.Location = new Point(3, 0);
+            labelMaskWidth.Name = "labelMaskWidth";
+            labelMaskWidth.Size = new Size(54, 20);
+            labelMaskWidth.TabIndex = 0;
+            labelMaskWidth.Text = "鎺╄啘瀹�";
+            // 
+            // labelMaskHeight
+            // 
+            labelMaskHeight.AutoSize = true;
+            labelMaskHeight.Location = new Point(253, 0);
+            labelMaskHeight.Name = "labelMaskHeight";
+            labelMaskHeight.Size = new Size(54, 20);
+            labelMaskHeight.TabIndex = 1;
+            labelMaskHeight.Text = "鎺╄啘楂�";
+            // 
+            // labelFactor
+            // 
+            labelFactor.AutoSize = true;
+            labelFactor.Location = new Point(3, 37);
+            labelFactor.Name = "labelFactor";
+            labelFactor.Size = new Size(69, 20);
+            labelFactor.TabIndex = 2;
+            labelFactor.Text = "澧炲己鍥犲瓙";
+            // 
+            // txtMaskWidth
+            // 
+            txtMaskWidth.Location = new Point(128, 3);
+            txtMaskWidth.Name = "txtMaskWidth";
+            txtMaskWidth.Size = new Size(119, 27);
+            txtMaskWidth.TabIndex = 3;
+            // 
+            // txtMaskHeight
+            // 
+            txtMaskHeight.Location = new Point(378, 3);
+            txtMaskHeight.Name = "txtMaskHeight";
+            txtMaskHeight.Size = new Size(119, 27);
+            txtMaskHeight.TabIndex = 4;
+            // 
+            // txtFactor
+            // 
+            txtFactor.Location = new Point(128, 40);
+            txtFactor.Name = "txtFactor";
+            txtFactor.Size = new Size(119, 27);
+            txtFactor.TabIndex = 5;
             // 
             // tabPage5
             // 
@@ -301,190 +449,6 @@
             ckbDrawRoi.TabIndex = 2;
             ckbDrawRoi.UseVisualStyleBackColor = true;
             // 
-            // tabPage2
-            // 
-            tabPage2.Controls.Add(tableLayoutResults);
-            tabPage2.Location = new Point(4, 29);
-            tabPage2.Margin = new Padding(4);
-            tabPage2.Name = "tabPage2";
-            tabPage2.Padding = new Padding(4);
-            tabPage2.Size = new Size(520, 611);
-            tabPage2.TabIndex = 1;
-            tabPage2.Text = "杈撳嚭缁撴灉";
-            tabPage2.UseVisualStyleBackColor = true;
-            // 
-            // tableLayoutResults
-            // 
-            tableLayoutResults.ColumnCount = 2;
-            tableLayoutResults.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 129F));
-            tableLayoutResults.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100F));
-            tableLayoutResults.Controls.Add(dtxtHeight, 1, 4);
-            tableLayoutResults.Controls.Add(label9, 0, 4);
-            tableLayoutResults.Controls.Add(label5, 0, 0);
-            tableLayoutResults.Controls.Add(label6, 0, 1);
-            tableLayoutResults.Controls.Add(label7, 0, 2);
-            tableLayoutResults.Controls.Add(label8, 0, 3);
-            tableLayoutResults.Controls.Add(dtxtCenterX, 1, 0);
-            tableLayoutResults.Controls.Add(dtxtCenterY, 1, 1);
-            tableLayoutResults.Controls.Add(dtxtAngle, 1, 2);
-            tableLayoutResults.Controls.Add(dtxtWidth, 1, 3);
-            tableLayoutResults.Controls.Add(label18, 0, 5);
-            tableLayoutResults.Controls.Add(dtxtCount, 1, 5);
-            tableLayoutResults.Dock = DockStyle.Fill;
-            tableLayoutResults.Location = new Point(4, 4);
-            tableLayoutResults.Margin = new Padding(3, 4, 3, 4);
-            tableLayoutResults.Name = "tableLayoutResults";
-            tableLayoutResults.RowCount = 10;
-            tableLayoutResults.RowStyles.Add(new RowStyle(SizeType.Percent, 10F));
-            tableLayoutResults.RowStyles.Add(new RowStyle(SizeType.Percent, 10F));
-            tableLayoutResults.RowStyles.Add(new RowStyle(SizeType.Percent, 10F));
-            tableLayoutResults.RowStyles.Add(new RowStyle(SizeType.Percent, 10F));
-            tableLayoutResults.RowStyles.Add(new RowStyle(SizeType.Percent, 10F));
-            tableLayoutResults.RowStyles.Add(new RowStyle(SizeType.Percent, 10F));
-            tableLayoutResults.RowStyles.Add(new RowStyle(SizeType.Percent, 10F));
-            tableLayoutResults.RowStyles.Add(new RowStyle(SizeType.Percent, 10F));
-            tableLayoutResults.RowStyles.Add(new RowStyle(SizeType.Percent, 10F));
-            tableLayoutResults.RowStyles.Add(new RowStyle(SizeType.Percent, 10F));
-            tableLayoutResults.Size = new Size(512, 603);
-            tableLayoutResults.TabIndex = 1;
-            // 
-            // dtxtHeight
-            // 
-            dtxtHeight.Dock = DockStyle.Fill;
-            dtxtHeight.Location = new Point(132, 244);
-            dtxtHeight.Margin = new Padding(3, 4, 3, 4);
-            dtxtHeight.Name = "dtxtHeight";
-            dtxtHeight.ReadOnly = true;
-            dtxtHeight.Size = new Size(377, 27);
-            dtxtHeight.TabIndex = 9;
-            // 
-            // label9
-            // 
-            label9.AutoSize = true;
-            label9.Dock = DockStyle.Fill;
-            label9.Location = new Point(3, 240);
-            label9.MaximumSize = new Size(0, 33);
-            label9.MinimumSize = new Size(0, 33);
-            label9.Name = "label9";
-            label9.Size = new Size(123, 33);
-            label9.TabIndex = 3;
-            label9.Text = "楂樺害";
-            label9.TextAlign = ContentAlignment.TopCenter;
-            // 
-            // label5
-            // 
-            label5.AutoSize = true;
-            label5.Dock = DockStyle.Fill;
-            label5.Location = new Point(3, 0);
-            label5.MaximumSize = new Size(0, 33);
-            label5.MinimumSize = new Size(0, 33);
-            label5.Name = "label5";
-            label5.Size = new Size(123, 33);
-            label5.TabIndex = 0;
-            label5.Text = "X";
-            label5.TextAlign = ContentAlignment.TopCenter;
-            // 
-            // label6
-            // 
-            label6.AutoSize = true;
-            label6.Dock = DockStyle.Fill;
-            label6.Location = new Point(3, 60);
-            label6.MaximumSize = new Size(0, 33);
-            label6.MinimumSize = new Size(0, 33);
-            label6.Name = "label6";
-            label6.Size = new Size(123, 33);
-            label6.TabIndex = 1;
-            label6.Text = "Y";
-            label6.TextAlign = ContentAlignment.TopCenter;
-            // 
-            // label7
-            // 
-            label7.AutoSize = true;
-            label7.Dock = DockStyle.Fill;
-            label7.Location = new Point(3, 120);
-            label7.MaximumSize = new Size(0, 33);
-            label7.MinimumSize = new Size(0, 33);
-            label7.Name = "label7";
-            label7.Size = new Size(123, 33);
-            label7.TabIndex = 2;
-            label7.Text = "瑙掑害(掳)";
-            label7.TextAlign = ContentAlignment.TopCenter;
-            // 
-            // label8
-            // 
-            label8.AutoSize = true;
-            label8.Dock = DockStyle.Fill;
-            label8.Location = new Point(3, 180);
-            label8.MaximumSize = new Size(0, 33);
-            label8.MinimumSize = new Size(0, 33);
-            label8.Name = "label8";
-            label8.Size = new Size(123, 33);
-            label8.TabIndex = 3;
-            label8.Text = "瀹藉害";
-            label8.TextAlign = ContentAlignment.TopCenter;
-            // 
-            // dtxtCenterX
-            // 
-            dtxtCenterX.Dock = DockStyle.Fill;
-            dtxtCenterX.Location = new Point(132, 4);
-            dtxtCenterX.Margin = new Padding(3, 4, 3, 4);
-            dtxtCenterX.Name = "dtxtCenterX";
-            dtxtCenterX.ReadOnly = true;
-            dtxtCenterX.Size = new Size(377, 27);
-            dtxtCenterX.TabIndex = 5;
-            // 
-            // dtxtCenterY
-            // 
-            dtxtCenterY.Dock = DockStyle.Fill;
-            dtxtCenterY.Location = new Point(132, 64);
-            dtxtCenterY.Margin = new Padding(3, 4, 3, 4);
-            dtxtCenterY.Name = "dtxtCenterY";
-            dtxtCenterY.ReadOnly = true;
-            dtxtCenterY.Size = new Size(377, 27);
-            dtxtCenterY.TabIndex = 6;
-            // 
-            // dtxtAngle
-            // 
-            dtxtAngle.Dock = DockStyle.Fill;
-            dtxtAngle.Location = new Point(132, 124);
-            dtxtAngle.Margin = new Padding(3, 4, 3, 4);
-            dtxtAngle.Name = "dtxtAngle";
-            dtxtAngle.ReadOnly = true;
-            dtxtAngle.Size = new Size(377, 27);
-            dtxtAngle.TabIndex = 7;
-            // 
-            // dtxtWidth
-            // 
-            dtxtWidth.Dock = DockStyle.Fill;
-            dtxtWidth.Location = new Point(132, 184);
-            dtxtWidth.Margin = new Padding(3, 4, 3, 4);
-            dtxtWidth.Name = "dtxtWidth";
-            dtxtWidth.ReadOnly = true;
-            dtxtWidth.Size = new Size(377, 27);
-            dtxtWidth.TabIndex = 8;
-            // 
-            // label18
-            // 
-            label18.AutoSize = true;
-            label18.Dock = DockStyle.Fill;
-            label18.Location = new Point(4, 300);
-            label18.Margin = new Padding(4, 0, 4, 0);
-            label18.Name = "label18";
-            label18.Size = new Size(121, 60);
-            label18.TabIndex = 10;
-            label18.Text = "鏁伴噺";
-            label18.TextAlign = ContentAlignment.TopCenter;
-            // 
-            // dtxtCount
-            // 
-            dtxtCount.Dock = DockStyle.Fill;
-            dtxtCount.Location = new Point(133, 304);
-            dtxtCount.Margin = new Padding(4);
-            dtxtCount.Name = "dtxtCount";
-            dtxtCount.ReadOnly = true;
-            dtxtCount.Size = new Size(375, 27);
-            dtxtCount.TabIndex = 11;
-            // 
             // imgTabControl
             // 
             imgTabControl.Controls.Add(tabPageInputImage);
@@ -530,76 +494,6 @@
             pnlRecordImage.Size = new Size(782, 603);
             pnlRecordImage.TabIndex = 45;
             // 
-            // tableLayoutPanel1
-            // 
-            tableLayoutPanel1.ColumnCount = 1;
-            tableLayoutPanel1.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F));
-            tableLayoutPanel1.Controls.Add(tableLayoutPanel3, 0, 0);
-            tableLayoutPanel1.Controls.Add(dataGridView1, 0, 1);
-            tableLayoutPanel1.Dock = DockStyle.Fill;
-            tableLayoutPanel1.Location = new Point(4, 4);
-            tableLayoutPanel1.Name = "tableLayoutPanel1";
-            tableLayoutPanel1.RowCount = 2;
-            tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Percent, 10.2819233F));
-            tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Percent, 89.71808F));
-            tableLayoutPanel1.Size = new Size(512, 603);
-            tableLayoutPanel1.TabIndex = 1;
-            // 
-            // tableLayoutPanel3
-            // 
-            tableLayoutPanel3.ColumnCount = 3;
-            tableLayoutPanel3.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 31.5363884F));
-            tableLayoutPanel3.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 68.4636154F));
-            tableLayoutPanel3.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 136F));
-            tableLayoutPanel3.Controls.Add(cmbImageEnhancement, 1, 0);
-            tableLayoutPanel3.Controls.Add(label14, 0, 0);
-            tableLayoutPanel3.Controls.Add(button1, 2, 0);
-            tableLayoutPanel3.Location = new Point(3, 3);
-            tableLayoutPanel3.Name = "tableLayoutPanel3";
-            tableLayoutPanel3.RowCount = 1;
-            tableLayoutPanel3.RowStyles.Add(new RowStyle(SizeType.Percent, 50F));
-            tableLayoutPanel3.Size = new Size(506, 54);
-            tableLayoutPanel3.TabIndex = 1;
-            // 
-            // label14
-            // 
-            label14.AutoSize = true;
-            label14.Location = new Point(3, 0);
-            label14.MaximumSize = new Size(0, 33);
-            label14.MinimumSize = new Size(0, 33);
-            label14.Name = "label14";
-            label14.Size = new Size(69, 33);
-            label14.TabIndex = 1;
-            label14.Text = "婊ゆ尝绫诲瀷";
-            label14.TextAlign = ContentAlignment.MiddleCenter;
-            // 
-            // cmbImageEnhancement
-            // 
-            cmbImageEnhancement.FormattingEnabled = true;
-            cmbImageEnhancement.Location = new Point(120, 4);
-            cmbImageEnhancement.Margin = new Padding(4);
-            cmbImageEnhancement.Name = "cmbImageEnhancement";
-            cmbImageEnhancement.Size = new Size(129, 28);
-            cmbImageEnhancement.TabIndex = 14;
-            // 
-            // button1
-            // 
-            button1.Location = new Point(372, 3);
-            button1.Name = "button1";
-            button1.Size = new Size(131, 48);
-            button1.TabIndex = 15;
-            button1.Text = "娣诲姞";
-            button1.UseVisualStyleBackColor = true;
-            // 
-            // dataGridView1
-            // 
-            dataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;
-            dataGridView1.Location = new Point(3, 64);
-            dataGridView1.Name = "dataGridView1";
-            dataGridView1.RowHeadersWidth = 51;
-            dataGridView1.Size = new Size(506, 536);
-            dataGridView1.TabIndex = 2;
-            // 
             // HImageEnhancementToolEdit
             // 
             AutoScaleDimensions = new SizeF(9F, 20F);
@@ -617,19 +511,19 @@
             MainTableLayoutPanel.ResumeLayout(false);
             parasTabControl.ResumeLayout(false);
             tabPage1.ResumeLayout(false);
+            tableLayoutPanel1.ResumeLayout(false);
+            ((System.ComponentModel.ISupportInitialize)dataGridViewIE).EndInit();
+            tableLayoutPanel4.ResumeLayout(false);
+            tableLayoutPanel3.ResumeLayout(false);
+            tableLayoutPanel3.PerformLayout();
+            tableLayoutPanel5.ResumeLayout(false);
+            tableLayoutPanel5.PerformLayout();
             tabPage5.ResumeLayout(false);
             tableLayoutPanel2.ResumeLayout(false);
             tableLayoutPanel2.PerformLayout();
-            tabPage2.ResumeLayout(false);
-            tableLayoutResults.ResumeLayout(false);
-            tableLayoutResults.PerformLayout();
             imgTabControl.ResumeLayout(false);
             tabPageInputImage.ResumeLayout(false);
             tabPageRecordImage.ResumeLayout(false);
-            tableLayoutPanel1.ResumeLayout(false);
-            tableLayoutPanel3.ResumeLayout(false);
-            tableLayoutPanel3.PerformLayout();
-            ((System.ComponentModel.ISupportInitialize)dataGridView1).EndInit();
             ResumeLayout(false);
             PerformLayout();
         }
@@ -645,18 +539,6 @@
         private ToolStripButton btnLoadImage;
         private TabControl parasTabControl;
         private TabPage tabPage1;
-        private TabPage tabPage2;
-        private TableLayoutPanel tableLayoutResults;
-        private Label label5;
-        private Label label6;
-        private Label label7;
-        private Label label8;
-        private TextBox dtxtCenterX;
-        private TextBox dtxtCenterY;
-        private TextBox dtxtAngle;
-        private TextBox dtxtWidth;
-        private TextBox dtxtHeight;
-        private Label label9;
         private TabPage tabPage5;
         private TabControl imgTabControl;
         private TabPage tabPageInputImage;
@@ -664,8 +546,6 @@
         private ToolStripButton btnSaveParas;
         private ToolStripButton btnLoadParas;
         private Panel pnlRecordImage;
-        private Label label18;
-        private TextBox dtxtCount;
         private ToolStripStatusLabel lblRunTime;
         private TableLayoutPanel tableLayoutPanel2;
         public ComboBox cmbTypeRoi;
@@ -675,9 +555,17 @@
         private CheckBox ckbDrawRoi;
         private TableLayoutPanel tableLayoutPanel1;
         private TableLayoutPanel tableLayoutPanel3;
-        private Label label14;
+        private Label labelImageEnhancement;
         private ComboBox cmbImageEnhancement;
-        private Button button1;
-        private DataGridView dataGridView1;
+        private DataGridView dataGridViewIE;
+        private TableLayoutPanel tableLayoutPanel4;
+        private Button btnAdd;
+        private TableLayoutPanel tableLayoutPanel5;
+        private Label labelMaskWidth;
+        private Label labelMaskHeight;
+        private Label labelFactor;
+        private TextBox txtMaskWidth;
+        private TextBox txtMaskHeight;
+        private TextBox txtFactor;
     }
 }
diff --git a/LB_VisionProcesses/Alogrithms/Halcon/2D/HImageEnhancementTool/HImageEnhancementToolEdit.cs b/LB_VisionProcesses/Alogrithms/Halcon/2D/HImageEnhancementTool/HImageEnhancementToolEdit.cs
index 0c04737..be2d74e 100644
--- a/LB_VisionProcesses/Alogrithms/Halcon/2D/HImageEnhancementTool/HImageEnhancementToolEdit.cs
+++ b/LB_VisionProcesses/Alogrithms/Halcon/2D/HImageEnhancementTool/HImageEnhancementToolEdit.cs
@@ -1,4 +1,9 @@
-锘縰sing System;
+锘縰sing HalconDotNet;
+using LB_SmartVisionCommon;
+using LB_VisionControl;
+using LB_VisionProcesses.Alogrithms.Halcon;
+using Sunny.UI.Win32;
+using System;
 using System.Collections.Generic;
 using System.ComponentModel;
 using System.Data;
@@ -8,13 +13,454 @@
 using System.Threading.Tasks;
 using System.Windows.Forms;
 
-namespace LB_VisionProcesses.Alogrithms.Halcon._2D.HEdgeExtractionTool
+namespace LB_VisionProcesses.Alogrithms.Halcon
 {
-    public partial class HImageEnhancementToolEdit : UserControl
+    public partial class HImageEnhancementToolEdit : TAlgorithmEdit
     {
-        public HImageEnhancementToolEdit()
+
+        private int rowriginalHeight;
+        public HImageEnhancementToolEdit(HImageEnhancementTool subject = null)
         {
+            if (subject != null && subject is HImageEnhancementTool)
+                Subject = subject;
+            else
+                Subject = new HImageEnhancementTool();
+
+            if (!(Subject.Params.ROI is HSegment))
+                Subject.Params.ROI = new HSegment(0, 0, 250, 250);
+
+            // 淇濆瓨鍘熷琛岄珮搴�
+            rowriginalHeight = (int)tableLayoutPanel4.RowStyles[1].Height;
+
+            this.Dock = DockStyle.Fill;
             InitializeComponent();
+            InitializeComboBox();
+            InitializeDataGridView();
         }
+
+        private void InitializeComboBox()
+        {
+            //// 娣诲姞鏉冮檺閫夐」
+            //foreach (var item in Enum.GetValues(typeof(UserPermission)))
+            //{
+            //    cmbImageEnhancement.Items.Add(item.ToString());
+            //}
+            cmbImageEnhancement.Items.Add("emphasize杈圭紭澧炲己");
+            cmbImageEnhancement.Items.Add("equ_histo_image鐩存柟鍥惧潎琛″寲");
+            cmbImageEnhancement.Items.Add("scale_image_max姣斾緥澧炲己");
+
+            // 璁剧疆榛樿閫夋嫨椤�
+            cmbImageEnhancement.SelectedIndex = 2;
+        }
+        #region 鍥惧儚澧炲己绠楁硶閫夋嫨涓嬫媺妗�
+        private void cmbImageEnhancement_SelectedIndexChanged(object sender, EventArgs e)
+        {
+            ComboBox cb = sender as ComboBox;
+
+            if (cb.SelectedIndex == 0)
+            {
+                ShowRow();
+            }
+            else if (cb.SelectedIndex == 1)
+            {
+                HideRow();
+            }
+        }
+        private void ShowRow()
+        {
+            // 鏄剧ずRow2锛堟仮澶嶉珮搴︼級
+            tableLayoutPanel4.RowStyles[1].SizeType = SizeType.Absolute;
+            tableLayoutPanel4.RowStyles[1].Height = rowriginalHeight;
+
+            // 鏄剧ずRow2涓殑鎺т欢
+            foreach (Control ctrl in tableLayoutPanel4.Controls)
+            {
+                int row = tableLayoutPanel4.GetRow(ctrl);
+                if (row == 1)
+                    ctrl.Visible = true;
+            }
+        }
+
+        private void HideRow()
+        {
+            // 鏄剧ずRow2锛堟仮澶嶉珮搴︼級
+            tableLayoutPanel4.RowStyles[1].SizeType = SizeType.Absolute;
+            tableLayoutPanel4.RowStyles[1].Height = 0;
+
+            // 鏄剧ずRow2涓殑鎺т欢
+            foreach (Control ctrl in tableLayoutPanel4.Controls)
+            {
+                int row = tableLayoutPanel4.GetRow(ctrl);
+                if (row == 1)
+                    ctrl.Visible = false;
+            }
+        }
+        #endregion
+        private void InitializeDataGridView()
+        {
+            //this.dataGridViewIE.DataSource = recordUserDatas;
+
+            // 璁剧疆鍒楁爣棰�
+            dataGridViewIE.Columns[0].Name = "婊ゆ尝鍣ㄧ被鍨�";
+            dataGridViewIE.Columns[1].Name = "鎺╄啘瀹藉害";
+            dataGridViewIE.Columns[2].Name = "鎺╄啘楂樺害";
+            dataGridViewIE.Columns[3].Name = "澧炲己鍥犲瓙";
+
+            // 璁剧疆DataGridView鍒楀
+            dataGridViewIE.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
+        }
+
+        /// <summary>
+        /// 鎺т欢鍔犺浇浜嬩欢
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void HImageEnhancementToolEdit_Load(object sender, EventArgs e)
+        {
+            pnlInputImage.Controls.Add(inputImageHSmartWindowControl);
+            inputImageHSmartWindowControl.Dock = DockStyle.Fill;
+
+            pnlRecordImage.Controls.Add(recordImageHSmartWindowControl);
+            recordImageHSmartWindowControl.Dock = DockStyle.Fill;
+
+            //閬嶅巻鍙互閫夋嫨鐨凴oi绫诲瀷鏋氫妇
+            foreach (var value in Enum.GetValues(typeof(RoiType)))
+                cmbTypeRoi.Items.Add(value.ToString());
+
+            //閬嶅巻鍙互閫夋嫨鐨勫浘鍍忓寮虹被鍨嬫灇涓�
+            foreach (var value in Enum.GetValues(typeof(ImageEnhancementType)))
+                cmbImageEnhancement.Items.Add(value.ToString());
+
+            //閬嶅巻鍙互閫夋嫨鐨凢ixture鏋氫妇
+            cmbFixture.Items.Add("");
+            foreach (string value in IProcess.dicFixtures.Keys)
+                cmbFixture.Items.Add(value.ToString());
+
+            ckbDrawRoi.Checked = true;
+            cmbTypeRoi.Text = RoiType.Segment.ToString();
+            cmbImageEnhancement.Text = Transition.Ignore.ToString();
+            LoadParas();
+
+            if (Subject.Result)
+            {
+                lblResult.BackColor = Color.Green;
+                lblResult.Text = "True";
+            }
+            else
+            {
+                lblResult.BackColor = Color.Red;
+                lblResult.Text = "False";
+            }
+
+            lblMsg.Text = Msg.Length > 50 ? Msg.Substring(0, 50) : Msg;
+            lblMsgToolTip.SetToolTip(BtmStatusStrip, Msg);
+            lblRunTime.Text = $"{Subject.RunTime}ms";
+        }
+
+        /// <summary>
+        /// 鏇存柊杩愯鍙傛暟
+        /// </summary>
+        public override void UpdataInputs()
+        {
+            //璁剧疆杩愯鍙傛暟
+            double dResult = 0;
+            int iResult = 0;
+
+            if (cmbFixture.Text == "")
+                Subject.Params.Fixture = new Fixture();
+            else if (IProcess.dicFixtures.ContainsKey(cmbFixture.Text))
+                Subject.Params.Fixture = IProcess.dicFixtures[cmbFixture.Text];
+
+            Type type = inputImageHSmartWindowControl.oRoi?.GetType();
+            switch (type)
+            {
+                case Type t when t == typeof(HRectangle2):
+                    HRectangle2 hRectangle2 = (HRectangle2)inputImageHSmartWindowControl.oRoi;
+                    Subject.Params.ROI
+                        = new HRectangle2(hRectangle2.X - Subject.Params.Fixture.X, hRectangle2.Y - Subject.Params.Fixture.Y
+                        , hRectangle2.Phi - Subject.Params.Fixture.Phi, hRectangle2.Width, hRectangle2.Height);
+                    break;
+                case Type t when t == typeof(HCircle):
+                    HCircle hCircle = (HCircle)inputImageHSmartWindowControl.oRoi;
+                    Subject.Params.ROI
+                        = new HCircle(hCircle.X - Subject.Params.Fixture.X, hCircle.Y - Subject.Params.Fixture.Y, hCircle.Radius);
+                    break;
+                case Type t when t == typeof(HSegment):
+                    HSegment hSegment = (HSegment)inputImageHSmartWindowControl.oRoi;
+                    Subject.Params.ROI
+                        = new HSegment(hSegment.StartX - Subject.Params.Fixture.X, hSegment.StartY - Subject.Params.Fixture.Y
+                        , hSegment.EndX - Subject.Params.Fixture.X, hSegment.EndY - Subject.Params.Fixture.Y);
+                    break;
+                default:
+                    Subject.Params.ROI = new ROI();
+                    break;
+            }
+        }
+
+        /// <summary>
+        /// 鍔犺浇杩愯鍙傛暟
+        /// </summary>
+        public override void LoadParas()
+        {
+            this.BeginInvoke(new Action(() =>
+            {
+
+                if (Subject.InputImage != null && Subject.InputImage is HObject)
+                    inputImageHSmartWindowControl.ShowHoImage((HObject)Subject.InputImage);
+
+                Type type = Subject.Params.ROI?.GetType();
+                if (Subject.Params.ROI != null)
+                {
+                    switch (type)
+                    {
+                        case Type t when t == typeof(HRectangle2):
+                            cmbTypeRoi.Text = RoiType.Rectangle2.ToString();
+                            break;
+                        case Type t when t == typeof(HCircle):
+                            cmbTypeRoi.Text = RoiType.Circle.ToString();
+                            break;
+                        case Type t when t == typeof(HSegment):
+                            cmbTypeRoi.Text = RoiType.Segment.ToString();
+                            break;
+                        default:
+                            cmbTypeRoi.Text = RoiType.None.ToString();
+                            break;
+                    }
+                    if (cmbTypeRoi.Text.ToString() != "None")
+                        ckbDrawRoi.Checked = true;
+                    else
+                        ckbDrawRoi.Checked = false;
+
+                    inputImageHSmartWindowControl.oRoi = Subject.Params.ROI;
+                }
+
+                if (Subject.Params.Fixture != null)
+                    cmbFixture.Text = Subject.Params.Fixture.strName;
+                else
+                    cmbFixture.Text = "";
+
+                switch (type)
+                {
+                    case Type t when t == typeof(HRectangle2):
+                        inputImageHSmartWindowControl.oRoi
+                             = new HRectangle2(Subject.Params.ROI.X + Subject.Params.Fixture.X, Subject.Params.ROI.Y + Subject.Params.Fixture.Y
+                             , Subject.Params.ROI.Phi + Subject.Params.Fixture.Phi, ((HRectangle2)Subject.Params.ROI).Width, ((HRectangle2)Subject.Params.ROI).Height);
+                        break;
+                    case Type t when t == typeof(HCircle):
+                        inputImageHSmartWindowControl.oRoi
+                        = new HCircle(Subject.Params.ROI.X + Subject.Params.Fixture.X, Subject.Params.ROI.Y + Subject.Params.Fixture.Y
+                        , ((HCircle)Subject.Params.ROI).Radius);
+                        break;
+                    case Type t when t == typeof(HSegment):
+                        inputImageHSmartWindowControl.oRoi
+                        = new HSegment(((HSegment)Subject.Params.ROI).StartX + Subject.Params.Fixture.X, ((HSegment)Subject.Params.ROI).StartY + Subject.Params.Fixture.Y
+                        , ((HSegment)Subject.Params.ROI).EndX + Subject.Params.Fixture.X, ((HSegment)Subject.Params.ROI).EndY + Subject.Params.Fixture.Y);
+                        break;
+                    default:
+                        inputImageHSmartWindowControl.oRoi = null;
+                        break;
+                }
+            }));
+        }
+        private void btnAdd_Click(object sender, EventArgs e)
+        {
+            switch (cmbImageEnhancement.SelectedIndex)
+            {
+                case 0:
+
+                    break;
+                case 1:
+
+                    break;
+                case 2:
+
+                    break;
+            }
+        }
+
+        /// <summary>
+        /// 鐐瑰嚮杩愯
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        public override void btnRun_Click(object sender, EventArgs e)
+        {
+            if (Subject.InputImage != null)
+                InputImage = Subject.InputImage;
+
+            DateTime StartTime = DateTime.Now;
+            Run();
+
+            //鏇存柊鏃ュ織涓庣粨鏋�
+            this.BeginInvoke(new Action(() =>
+            {
+                if (Subject.Result)
+                {
+                    lblResult.BackColor = Color.Green;
+                    lblResult.Text = "True";
+                    recordImageHSmartWindowControl.SetColor("green");
+                }
+                else
+                {
+                    lblResult.BackColor = Color.Red;
+                    lblResult.Text = "False";
+                    recordImageHSmartWindowControl.SetColor("red");
+                }
+
+                lblMsg.Text = Msg.Length > 50 ? Msg.Substring(0, 50) : Msg;
+                lblMsgToolTip.SetToolTip(BtmStatusStrip, Msg);
+                lblRunTime.Text = $"{(DateTime.Now - StartTime).TotalMilliseconds}ms";
+
+                UpdataOutputs();
+                imgTabControl.SelectedTab = tabPageRecordImage;
+
+                if (Subject.InputImage != null && Subject.InputImage is HObject)
+                {
+                    HOperatorSet.GetImageSize((HObject)Subject.InputImage, out HTuple ho_ImageWidth, out HTuple ho_ImageHeight);
+                    recordImageHSmartWindowControl.ShowHoImage((HObject)Subject.InputImage);
+                }
+
+                //鍏堝垽鏂瓙绫诲啀鍒ゆ柇鐖剁被
+                if (Subject.Record != null && Subject.Record is MsgRecord msgRecord)
+                {
+                    recordImageHSmartWindowControl.DispObj(msgRecord.RecordObject_OK, true);
+                    recordImageHSmartWindowControl.DispObj(msgRecord.RecordObject_NG, false);
+
+                    for (int i = 0; i < msgRecord.Msg.Length; i++)
+                        recordImageHSmartWindowControl.ShowMsg(msgRecord.Msg[i]
+                            , 1 == msgRecord.Result[i] ? true : false, msgRecord.Column[i], msgRecord.Row[i]);
+                }
+                else if (Subject.Record != null && Subject.Record is ObjectRecord objRecord)
+                {
+                    recordImageHSmartWindowControl.DispObj(objRecord.RecordObject_OK, true);
+                    recordImageHSmartWindowControl.DispObj(objRecord.RecordObject_NG, false);
+                }
+
+                GC.Collect();
+            }));
+        }
+        #region 宸ュ叿鏍忔寜閽簨浠�
+        /// <summary>
+        /// 宸ュ叿鏍忊�滃鍥锯��
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        public override void btnLoadImage_Click(object sender, EventArgs e)
+        {
+            OpenFileDialog openFileDialog = new OpenFileDialog();
+
+            // 璁剧疆鏂囦欢瀵硅瘽妗嗙殑灞炴��
+            openFileDialog.Multiselect = false; // 涓嶅厑璁稿閫�
+            // 璁剧疆鏂囦欢杩囨护鍣紝鏀寔澶氱鏂囦欢绫诲瀷
+            openFileDialog.Filter = "Image Files (*.png;*.jpg;*.jpeg;*.bmp)|*.png;*.jpg;*.jpeg;*.bmp|All Files (*.*)|*.*";
+            // 鏄剧ず鏂囦欢瀵硅瘽妗�
+            DialogResult result = openFileDialog.ShowDialog();
+
+            // 澶勭悊瀵硅瘽妗嗚繑鍥炵粨鏋�
+            if (result == DialogResult.OK)
+            {
+                // 鑾峰彇鐢ㄦ埛閫夋嫨鐨勬枃浠跺悕
+                string[] selectedFiles = openFileDialog.FileNames;
+                if (selectedFiles.Length > 0)
+                {
+                    HOperatorSet.ReadImage(out HObject ho_Image, selectedFiles[0]);
+                    //鍒ゆ柇鏄惁涓虹伆搴﹀浘
+                    using (HDevDisposeHelper dh = new HDevDisposeHelper())
+                    {
+                        HOperatorSet.CountChannels(ho_Image, out HTuple hv_Channels);
+                        if (hv_Channels.TupleInt() != 1)
+                        {
+                            HOperatorSet.Rgb1ToGray(ho_Image, out ho_Image);
+                            //鏇存柊鏃ュ織涓庣粨鏋�
+                            this.BeginInvoke(new Action(() =>
+                            {
+                                lblMsg.Text = "瀵煎叆鍥剧墖闈炵伆搴﹀浘,鑷姩杞崲涓虹伆搴﹀浘";
+                            }));
+                        }
+                        InputImage = ho_Image;
+                        imgTabControl.SelectedTab = tabPageInputImage;
+                        inputImageHSmartWindowControl.oRoi = inputImageHSmartWindowControl.oRoi;
+                    }
+                }
+            }
+        }
+        /// <summary>
+        /// 宸ュ叿鏍忊�滀繚瀛樷��
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        public override void btnSaveParas_Click(object sender, EventArgs e) { base.btnSaveParas_Click(sender, e); }
+        #endregion
+        #region ROI鍔熻兘
+        /// <summary>
+        /// 鏄惁鍚敤ROI
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        public override void ckbDrawRoi_CheckedChanged(object sender, EventArgs e)
+        {
+            if (ckbDrawRoi.Checked)
+            {
+                inputImageHSmartWindowControl.bAollowDraw = true;
+                imgTabControl.SelectedTab = tabPageInputImage;
+            }
+            else
+            {
+                inputImageHSmartWindowControl.bAollowDraw = false;
+                Subject.Params.ROI = new ROI();
+            }
+        }
+        /// <summary>
+        /// ROI涓嬫媺妗嗘敼鍙樹簨浠�
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        public override void cmbTypeRoi_SelectedIndexChanged(object sender, EventArgs e)
+        {
+            try
+            {
+                if (Enum.TryParse(cmbTypeRoi.Text.ToString(), out RoiType type))
+                {
+                    HTuple hv_imageWidth = 0;
+                    HTuple hv_imageHeight = 0;
+                    if (InputImage != null && InputImage is HObject)
+                        HOperatorSet.GetImageSize((HObject)InputImage, out hv_imageWidth, out hv_imageHeight);
+                    switch (type)
+                    {
+                        case RoiType.Rectangle2:
+                            inputImageHSmartWindowControl.oRoi
+                                = new HRectangle2(hv_imageWidth.TupleReal() / 2, hv_imageHeight.TupleReal() / 2, 0
+                                , hv_imageWidth.TupleReal() / 4, hv_imageHeight.TupleReal() / 4);
+                            break;
+                        case RoiType.Circle:
+                            inputImageHSmartWindowControl.oRoi
+                                = new HCircle(hv_imageWidth.TupleReal() / 2, hv_imageHeight.TupleReal() / 2, hv_imageWidth.TupleReal() / 4);
+                            break;
+                        case RoiType.Segment:
+                            inputImageHSmartWindowControl.oRoi
+                                = new HSegment(0, 0, hv_imageWidth.TupleReal() / 4, hv_imageHeight.TupleReal() / 4);
+                            break;
+                        case RoiType.None:
+                        default:
+                            inputImageHSmartWindowControl.oRoi = null;
+                            break;
+                    }
+                }
+            }
+            catch { }
+        }
+        #endregion
+        public override void cmbFixture_SelectedIndexChanged(object sender, EventArgs e)
+        {
+            try
+            {
+                if (IProcess.dicFixtures.ContainsKey(cmbFixture.Text))
+                    Subject.Params.Fixture = IProcess.dicFixtures[cmbFixture.Text];
+                else
+                    Subject.Params.Fixture = new Fixture();
+            }
+            catch { }
+        }
+       
     }
 }
diff --git a/LB_VisionProcesses/Alogrithms/Halcon/2D/HImageEnhancementTool/HImageEnhancementToolEdit.resx b/LB_VisionProcesses/Alogrithms/Halcon/2D/HImageEnhancementTool/HImageEnhancementToolEdit.resx
index 66dba7c..3d728b5 100644
--- a/LB_VisionProcesses/Alogrithms/Halcon/2D/HImageEnhancementTool/HImageEnhancementToolEdit.resx
+++ b/LB_VisionProcesses/Alogrithms/Halcon/2D/HImageEnhancementTool/HImageEnhancementToolEdit.resx
@@ -117,10 +117,13 @@
   <resheader name="writer">
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
-  <metadata name="TopToolStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+  <metadata name="lblMsgToolTip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>17, 17</value>
   </metadata>
+  <metadata name="TopToolStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>183, 17</value>
+  </metadata>
   <metadata name="BtmStatusStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>174, 17</value>
+    <value>340, 17</value>
   </metadata>
 </root>
\ No newline at end of file
diff --git a/LB_VisionProcesses/ProcessEditForm.cs b/LB_VisionProcesses/ProcessEditForm.cs
index 9bb0a63..4db125b 100644
--- a/LB_VisionProcesses/ProcessEditForm.cs
+++ b/LB_VisionProcesses/ProcessEditForm.cs
@@ -99,7 +99,7 @@
                     e.Cancel = true;  //鍙栨秷鍏抽棴绐椾綋
                     return;
                 }
-
+                
                 if (res == DialogResult.Yes && OriProcess != null)  //淇濆瓨VPP
                 {
                     //鍒╃敤鍙嶅皠鍒涘缓瀹炰緥锛屽懡鍚嶈鑼冿細Tool+Edit

--
Gitblit v1.9.3