| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- using System.Windows;
- using System.Windows.Controls;
- using Plugins.Halcon.Views;
- using TeamAAS.Vision;
- namespace Plugins.Halcon.Engines
- {
- /// <summary>
- /// HALCON 视觉引擎:实现 <see cref="IVisualEngine"/> 契约,由 VisualEngineManager 反射探测后
- /// 出现在设置页引擎列表,可一键切换。主页多画面基于 <see cref="UCDispHalcon"/>(HALCON 画面框网格),
- /// 与 VisionProEngine / VisionMasterEngine 对等——HALCON SDK 只被本插件引用,宿主仅通过接口访问。
- /// </summary>
- public class HalconEngine : IVisualEngine
- {
- public string EngineName => "Vision";
- public FrameworkElement GetMainView() => UCDispHalcon.Instance;
- public void ApplyHomeLayout(int frameCount, int arrange)
- {
- // RowColNumber:{画面总数, 排列方式}——内部按最优行列铺设 HalconWindow 网格;0=清空画面区
- UCDispHalcon.Instance.RowColNumber = new[] { frameCount, arrange };
- }
- /// <summary>
- /// 标定视图:一个 HALCON 画面框(可显示标定图像、交互绘制 ROI)。
- /// 标定向导随当前引擎切换到此视图。
- /// </summary>
- public FrameworkElement GetCalibrationView()
- {
- var win = new HalconWindow(1);
- win.SetCaption("HALCON 标定");
- return new Border
- {
- Background = System.Windows.Media.Brushes.Transparent,
- Child = win
- };
- }
- public void SetFrameCaption(int index, string name)
- {
- if (index < 0 || UCDispHalcon.Instance.halconWindow.Count <= index) return;
- UCDispHalcon.Instance.halconWindow[index].SetCaption(name);
- }
- public void SetFrameDotVisible(int index, bool visible)
- {
- if (index < 0 || UCDispHalcon.Instance.halconWindow.Count <= index) return;
- UCDispHalcon.Instance.halconWindow[index].SetStatusDotVisible(visible);
- }
- }
- }
|