通用视觉工具模块-直接阈值分割模块-2-UI设计
一 链接图像
xmlns:vm="clr-namespace:Plugin.Threshold.ViewModels"UI
<Border Grid.Row="0"><ExpanderHeader="图像链接"IsExpanded="True"><StackPanelHorizontalAlignment="Center"><StackPanelOrientation="Horizontal"Margin="5 0"><TextBlockText="输入图像"HorizontalAlignment="Center"VerticalAlignment="Center"/><TextBoxHorizontalAlignment="Center"VerticalAlignment="Center"BorderThickness="0 0 0 1"Width="200"Margin="5 0"IsReadOnly="True"Style="{StaticResource LinkTextBox}"Text="{Binding InputImageLinkText}"mah:TextBoxHelper.LinkButtonCommand="{Binding LinkCommand,Mode=OneWay}"mah:TextBoxHelper.LinkButtonCommandParameter="{x:Static vm:eLinkCommand.InputImageLink}"/></StackPanel></StackPanel></Expander></Border>后端
publicenumeLinkCommand{InputImageLink,}privatestring_InputImageLinkText;/// <summary>/// 输入图像链接文本/// </summary>publicstringInputImageLinkText{get{return_InputImageLinkText;}set{Set(ref_InputImageLinkText,value);}}halcon显示控件加载
[NonSerialized]privateRImage_DispImage;publicRImageDispImage{get{return_DispImage;}set{_DispImage=value;}}/// <summary>/// 加载函数/// </summary>publicoverridevoidLoaded(){base.Loaded();varview=ModuleViewasThresholdView;if(view!=null){ClosedView=true;// 加载halcon显示控件if(view.mWindowH==null){view.mWindowH=newVMHWindowControl();view.winFormHost.Child=view.mWindowH;}// 二次打开复原操作if(DispImage!=null&&DispImage.IsInitialized()){// ShowHRoi();}}}显示图像
/// <summary>/// 参数变化回调函数/// </summary>/// <param name="obj"></param>privatevoidOnVarChanged(VarChangedEventParamModelobj){switch(obj.SendName.Split(',')[1]){case"InputImageLink":InputImageLinkText=obj.LinkName;// 获取图像到全局变量并显示图像GetDispImage(InputImageLinkText,true);break;default:break;}}二 阈值参数设置
UI
<Border Grid.Row="1"><GroupBoxHeader="阈值分割参数"Grid.Row="1"><StackPanelOrientation="Vertical"Margin="5 0"><StackPanelOrientation="Horizontal"Margin="10 8"><TextBlockText="开始:"VerticalAlignment="Center"HorizontalAlignment="Center"Width="90"/><mah:NumericUpDownWidth="200"BorderThickness="0 0 0 1"Value="{Binding StartThre}"/></StackPanel><StackPanelOrientation="Horizontal"Margin="10 8"><TextBlockText="结束:"VerticalAlignment="Center"HorizontalAlignment="Center"Width="90"/><mah:NumericUpDownWidth="200"BorderThickness="0 0 0 1"Value="{Binding EndThre}"/></StackPanel></StackPanel></GroupBox></Border>后端
privateint_StartThre=128;/// <summary>/// 起始阈值/// </summary>publicintStartThre{get{return_StartThre;}set{Set(ref_StartThre,value);}}privateint_EndThre=255;/// <summary>/// 结束阈值/// </summary>publicintEndtThre{get{return_EndThre;}set{Set(ref_EndThre,value);}}