From 8db52bc296f662691a17aabeeabebd713e3b576d Mon Sep 17 00:00:00 2001
From: C3031 <shitiangui@lanpucloud.cn>
Date: 星期五, 06 三月 2026 16:53:08 +0800
Subject: [PATCH] Merge branch 'master' of http://lanpucloud.cn:1111/r/~zhengyabo/LB_TyreAppearanceInspectionSoftware
---
LB_VisionProcesses/Alogrithms/Halcon/2D/HFilterTool/HFilterToolEdit.cs | 611 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 611 insertions(+), 0 deletions(-)
diff --git a/LB_VisionProcesses/Alogrithms/Halcon/2D/HFilterTool/HFilterToolEdit.cs b/LB_VisionProcesses/Alogrithms/Halcon/2D/HFilterTool/HFilterToolEdit.cs
new file mode 100644
index 0000000..9f38000
--- /dev/null
+++ b/LB_VisionProcesses/Alogrithms/Halcon/2D/HFilterTool/HFilterToolEdit.cs
@@ -0,0 +1,611 @@
+锘縰sing HalconDotNet;
+using LB_SmartVisionCommon;
+using LB_VisionControl;
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace LB_VisionProcesses.Alogrithms.Halcon
+{
+ public partial class HFilterToolEdit : TAlgorithmEdit
+ {
+ List<RecordFilterData> recordFilterDatas = new List<RecordFilterData>();
+ private int rowriginalHeight;
+ public HFilterToolEdit(HFilterTool subject = null)
+ {
+ if (subject != null && subject is HFilterTool)
+ Subject = subject;
+ else
+ Subject = new HFilterTool();
+
+ //if (!(Subject.Params.ROI is HSegment))
+ // Subject.Params.ROI = new HSegment(0, 0, 250, 250);
+
+ this.Dock = DockStyle.Fill;
+ InitializeComponent();
+ // 淇濆瓨鍘熷琛岄珮搴�
+ rowriginalHeight = (int)tableLayoutPanel4.RowStyles[1].Height; //45;
+ recordFilterDatas = FilterManager.Instance.GetAllUsers();
+
+ InitializeComboBox();
+ InitializeDataGridView();
+
+
+
+ this.dataGridViewFi.DataSource = recordFilterDatas;
+ this.dataGridViewFi.AutoGenerateColumns = true;
+ }
+
+ private void InitializeComboBox()
+ {
+ // 娣诲姞鏉冮檺閫夐」
+ foreach (var item in Enum.GetValues(typeof(FilterType)))
+ {
+ cmbFilterType.Items.Add(item.ToString());
+ }
+
+ // 璁剧疆榛樿閫夋嫨椤�
+ cmbFilterType.SelectedIndex = 0;
+ }
+
+ private void InitializeDataGridView()
+ {
+ this.dataGridViewFi.DataSource = recordFilterDatas;
+
+ // 璁剧疆DataGridView鍒楀
+ dataGridViewFi.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
+ }
+
+ /// <summary>
+ /// 鎺т欢鍔犺浇浜嬩欢
+ /// </summary>
+ /// <param name="sender"></param>
+ /// <param name="e"></param>
+ private void HFilterToolEdit_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(FilterType)))
+ // cmbFilterType.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();
+ cmbFilterType.Text = FilterType.鍧囧�兼护娉MeanImage.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";
+ }
+
+ private void ClearInputFields()
+ {
+ txtMaskWidth.Clear();
+ txtMaskHeight.Clear();
+ txtGuassSize.Clear();
+ cmbFilterType.SelectedIndex = 0;
+ }
+
+ /// <summary>
+ /// 娣诲姞绠楀瓙
+ /// </summary>
+ /// <param name="sender"></param>
+ /// <param name="e"></param>
+ private void btnAdd_Click(object sender, EventArgs e)
+ {
+ // 楠岃瘉杈撳叆
+ switch (cmbFilterType.SelectedIndex)
+ {
+ case 0:
+ if (string.IsNullOrWhiteSpace(txtMaskWidth.Text) || string.IsNullOrWhiteSpace(txtMaskHeight.Text))
+ {
+ MessageBox.Show("璇峰~鍐欐墍鏈夊繀濉瓧娈碉紒", "鎻愮ず",
+ MessageBoxButtons.OK, MessageBoxIcon.Warning);
+ return;
+ }
+ break;
+ case 1:
+ if (string.IsNullOrWhiteSpace(txtGuassSize.Text))
+ {
+ MessageBox.Show("璇峰~鍐欐墍鏈夊繀濉瓧娈碉紒", "鎻愮ず",
+ MessageBoxButtons.OK, MessageBoxIcon.Warning);
+ return;
+ }
+ break;
+ case 2:
+ if (string.IsNullOrWhiteSpace(txtMaskWidth.Text) || string.IsNullOrWhiteSpace(txtMaskHeight.Text))
+ {
+ MessageBox.Show("璇峰~鍐欐墍鏈夊繀濉瓧娈碉紒", "鎻愮ず",
+ MessageBoxButtons.OK, MessageBoxIcon.Warning);
+ return;
+ }
+ break;
+ }
+
+ RecordFilterData filter = new RecordFilterData();
+ filter.MaskWidth = this.txtMaskWidth.Text;
+ filter.MaskHight = this.txtMaskHeight.Text;
+ filter.GaussSize = this.txtGuassSize.Text;
+ filter.FilterName = (FilterType)this.cmbFilterType.SelectedIndex;
+ // 娣诲姞鍒� UserManager
+ bool success = FilterManager.Instance.AddFilter(filter);
+ if (success)
+ {
+ recordFilterDatas.Add(filter);
+ //MessageBox.Show("鐢ㄦ埛娣诲姞鎴愬姛锛�", "鎻愮ず",
+ // MessageBoxButtons.OK, MessageBoxIcon.Information);
+
+ // 娓呯┖杈撳叆妗�
+ ClearInputFields();
+ }
+ else
+ {
+ MessageBox.Show("娣诲姞鐢ㄦ埛澶辫触锛�", "閿欒",
+ MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ recordFilterDatas = FilterManager.Instance.GetAllUsers();
+ this.dataGridViewFi.DataSource = recordFilterDatas;
+ this.dataGridViewFi.AutoGenerateColumns = true;
+ }
+
+ private void btnDel_Click(object sender, EventArgs e)
+ {
+ // 妫�鏌ユ槸鍚︽湁閫変腑鐨勬护娉㈢被鍨�
+ if (cmbFilterType.SelectedIndex < 0)
+ {
+ MessageBox.Show("璇烽�夋嫨瑕佸垹闄ょ殑婊ゆ尝绫诲瀷锛�", "鎻愮ず",
+ MessageBoxButtons.OK, MessageBoxIcon.Warning);
+ return;
+ }
+
+ try
+ {
+ DataGridViewRow selectedRow = dataGridViewFi.SelectedRows[0];
+ string filterToDel = selectedRow.Cells[0].Value?.ToString();
+
+
+ FilterType filterToDelete = (FilterType)cmbFilterType.SelectedIndex;
+
+ // 鏌ユ壘瀵瑰簲鐨勮褰�
+ RecordFilterData filterToRemove = null;
+
+ // 浠庢湰鍦板垪琛ㄤ腑鏌ユ壘
+ foreach (var filter in recordFilterDatas)
+ {
+ if (filter.FilterName.ToString() == filterToDel)
+ {
+ filterToRemove = filter;
+ break;
+ }
+ }
+
+ if (filterToRemove == null)
+ {
+ MessageBox.Show("鏈壘鍒板搴旂殑璁板綍锛�", "鎻愮ず",
+ MessageBoxButtons.OK, MessageBoxIcon.Warning);
+ return;
+ }
+
+ // 纭鍒犻櫎
+ DialogResult result = MessageBox.Show(
+ $"纭畾瑕佸垹闄� '{filterToDel}' 璁板綍鍚楋紵",
+ "纭鍒犻櫎",
+ MessageBoxButtons.YesNo,
+ MessageBoxIcon.Question,
+ MessageBoxDefaultButton.Button2); // 榛樿閫夋嫨"鍚�"
+
+ if (result == DialogResult.No)
+ return;
+
+ // 浠庣鐞嗗櫒涓垹闄�
+ bool success = FilterManager.Instance.DeleteUser(filterToRemove);
+
+ if (success)
+ {
+ // 浠庢湰鍦板垪琛ㄤ腑鍒犻櫎
+ recordFilterDatas.Remove(filterToRemove);
+
+ MessageBox.Show("鍒犻櫎鎴愬姛锛�", "鎻愮ず",
+ MessageBoxButtons.OK, MessageBoxIcon.Information);
+ }
+ else
+ {
+ MessageBox.Show("鍒犻櫎澶辫触锛�", "閿欒",
+ MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ recordFilterDatas = FilterManager.Instance.GetAllUsers();
+ this.dataGridViewFi.DataSource = recordFilterDatas;
+ this.dataGridViewFi.AutoGenerateColumns = true;
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show("璇烽�夋嫨瑕佸垹闄ょ殑绠楀瓙");
+ }
+ }
+ #region 绠楁硶閫夋嫨涓嬫媺妗�
+ private void cmbFilterType_SelectedIndexChanged(object sender, EventArgs e)
+ {
+ ComboBox cb = sender as ComboBox;
+
+ if (cb.SelectedIndex == 0)
+ {
+ ShowRow1();
+ }
+ else if (cb.SelectedIndex == 1)
+ {
+ ShowRow2();
+ }
+ else
+ {
+ ShowRow1();
+ }
+ }
+ private void ShowRow1()
+ {
+ // 鏄剧ずRow2锛堟仮澶嶉珮搴︼級
+ tableLayoutPanel4.RowStyles[1].SizeType = SizeType.Absolute;
+ tableLayoutPanel4.RowStyles[1].Height = rowriginalHeight;
+ tableLayoutPanel4.RowStyles[2].SizeType = SizeType.Absolute;
+ tableLayoutPanel4.RowStyles[2].Height = 0;
+
+ // 鏄剧ずRow2涓殑鎺т欢
+ foreach (Control ctrl in tableLayoutPanel4.Controls)
+ {
+ int row = tableLayoutPanel4.GetRow(ctrl);
+ if (row == 1)
+ ctrl.Visible = true;
+ if (row == 2)
+ ctrl.Visible = false;
+ }
+ }
+
+ private void ShowRow2()
+ {
+ // 鏄剧ずRow2锛堟仮澶嶉珮搴︼級
+ tableLayoutPanel4.RowStyles[1].SizeType = SizeType.Absolute;
+ tableLayoutPanel4.RowStyles[1].Height = 0;
+ tableLayoutPanel4.RowStyles[2].SizeType = SizeType.Absolute;
+ tableLayoutPanel4.RowStyles[2].Height = rowriginalHeight;
+
+ // 鏄剧ずRow2涓殑鎺т欢
+ foreach (Control ctrl in tableLayoutPanel4.Controls)
+ {
+ int row = tableLayoutPanel4.GetRow(ctrl);
+ if (row == 1)
+ ctrl.Visible = false;
+ if (row == 2)
+ ctrl.Visible = true;
+ }
+ }
+ #endregion
+
+ #region ROI
+ /// <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;
+ }
+ base.LoadParas();
+ }));
+ }
+ #endregion
+
+ #region 宸ュ叿鏍忔寜閽簨浠�
+ /// <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();
+ }));
+ }
+
+ /// <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 { }
+ }
+ 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 { }
+ }
+ #endregion
+
+
+ }
+}
--
Gitblit v1.9.3