通用视觉工具模块-打散模块-3-后端实现一 执行和确认命令/// summary/// 执行命令/// /summary[NonSerialized]privateCommandBase_ExecuteCommand;publicCommandBaseExecuteCommand{get{if(_ExecuteCommandnull){_ExecuteCommandnewCommandBase((obj){ExeModule();});}return_ExecuteCommand;}}/// summary/// 确认/// /summary[NonSerialized]privateCommandBase_ConfirmCommand;publicCommandBaseConfirmCommand{get{if(_ConfirmCommandnull){_ConfirmCommandnewCommandBase((obj){varviewthis.ModuleViewasThresholdView;// 关闭界面if(view!null){view.Close();}});}return_ConfirmCommand;}}二 链接命令/// summary/// 参数变化回调函数/// /summary/// param nameobj/paramprivatevoidOnVarChanged(VarChangedEventParamModelobj){switch(obj.SendName.Split(,)[1]){caseInputRegionLink:InputRegionLinkTextobj.LinkName;break;default:break;}}[NonSerialized]privateCommandBase_LinkCommand;publicCommandBaseLinkCommand{get{if(_LinkCommandnull){//以GUID类名作为筛选器EventMgr.Ins.GetEventVarChangedEvent().Subscribe(OnVarChanged,oo.SendName.StartsWith(${ModuleGuid}));_LinkCommandnewCommandBase((obj){eLinkCommandlinkCommand(eLinkCommand)obj;switch(linkCommand){caseeLinkCommand.InputRegionLink:// 获取当前模块之前的所有可获得的HImage参数CommonMethods.GetModuleList(ModuleParam,VarLinkViewModel.Ins.Modules,object);// 链接选择框EventMgr.Ins.GetEventOpenVarLinkViewEvent().Publish(${ModuleGuid},InputRegionLink);break;default:break;}});}return_LinkCommand;}}三 加载显示窗口[NonSerialized]VMHWindowControlmWindowH;/// summary/// 加载函数/// /summarypublicoverridevoidLoaded(){base.Loaded();varviewModuleViewasConnectionView;if(view!null){ClosedViewtrue;// 加载halcon显示控件if(view.mWindowHnull){view.mWindowHnewVMHWindowControl();view.winFormHost.Childview.mWindowH;}// 二次打开复原操作if(DispImage!nullDispImage.IsInitialized()){ShowHRoi();}}}四 显示结果/// summary/// 显示结果/// /summarypublicvoidShowRes(){if(ConnectedRegions!nullConnectedRegions.IsInitialized()){// 添加到mHRoi中ShowHRoi(newHRoi(ModuleParam.ModuleEncode,ModuleParam.ModuleName,ModuleParam.Remarks,HRoiType.检测结果,green,newHObject(ConnectedRegions),true));}varviewModuleViewasConnectionView;// 如果当前窗口已关闭则显示主界面窗口if(viewnull||view.IsClosed){mWindowHViewDic.GetView(DispImage.DispViewID);}// 否则显示对应view里面的窗口else{mWindowHview.mWindowH;}ListHRoiroiListmHRoi.Where(cc.ModuleNameModuleParam.ModuleName).ToList();foreach(HRoiroiinroiList){if(roi.roiTypeHRoiType.文字显示){HTextroiText(HText)roi;ShowTool.SetFont(mWindowH.hControl.HalconWindow,roiText.size,false,false);ShowTool.SetMsg(mWindowH.hControl.HalconWindow,roiText.text,image,roiText.row,roiText.col,roiText.drawColor,false);}else{mWindowH.WindowH.DispHobject(roi.hobject,roi.drawColor,roi.IsFillDisp);}}}添加输出publicoverridevoidAddOutputParams(){base.AddOutputParams();AddOutputParam(打散区域,HObject,ConnectedRegions);}