using System.Windows; using System.Windows.Controls; using Plugins.Halcon.Views; using TeamAAS.Vision; namespace Plugins.Halcon.Engines { /// /// HALCON 视觉引擎:实现 契约,由 VisualEngineManager 反射探测后 /// 出现在设置页引擎列表,可一键切换。主页多画面基于 (HALCON 画面框网格), /// 与 VisionProEngine / VisionMasterEngine 对等——HALCON SDK 只被本插件引用,宿主仅通过接口访问。 /// 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 }; } /// /// 标定视图:一个 HALCON 画面框(可显示标定图像、交互绘制 ROI)。 /// 标定向导随当前引擎切换到此视图。 /// 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); } } }