通用视觉工具模块-直接阈值分割模块-2-UI设计 一 链接图像 xmlns: vm= "clr-namespace:Plugin.Threshold.ViewModels" UI < Border Grid. Row= "0" > < Expander Header= "图像链接" IsExpanded= "True" > < StackPanel HorizontalAlignment= "Center" > < StackPanel Orientation= "Horizontal" Margin= "5 0" > < TextBlock Text= "输入图像" HorizontalAlignment= "Center" VerticalAlignment= "Center" / > < TextBox HorizontalAlignment= "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> 后端 public enum eLinkCommand { InputImageLink, } private string _InputImageLinkText; /// <summary> /// 输入图像链接文本 /// </summary> public string InputImageLinkText{ get { return _InputImageLinkText; } set { Set ( ref _InputImageLinkText, value ) ; } } halcon显示控件加载 [ NonSerialized ] private RImage _DispImage; public RImage DispImage{ get { return _DispImage; } set { _DispImage= value ; } } /// <summary> /// 加载函数 /// </summary> public override void Loaded ( ) { base . Loaded ( ) ; var view= ModuleViewas ThresholdView ; if ( view!= null ) { ClosedView= true ; // 加载halcon显示控件 if ( view. mWindowH== null ) { view. mWindowH= new VMHWindowControl ( ) ; view. winFormHost. Child= view. mWindowH; } // 二次打开复原操作 if ( DispImage!= null && DispImage. IsInitialized ( ) ) { // ShowHRoi(); } } } 显示图像 /// <summary> /// 参数变化回调函数 /// </summary> /// <param name="obj"></param> private void OnVarChanged ( VarChangedEventParamModel obj) { switch ( obj. SendName. Split ( ',' ) [ 1 ] ) { case "InputImageLink" : InputImageLinkText= obj. LinkName; // 获取图像到全局变量并显示图像 GetDispImage ( InputImageLinkText, true ) ; break ; default : break ; } } 二 阈值参数设置 UI < Border Grid. Row= "1" > < GroupBox Header= "阈值分割参数" Grid. Row= "1" > < StackPanel Orientation= "Vertical" Margin= "5 0" > < StackPanel Orientation= "Horizontal" Margin= "10 8" > < TextBlock Text= "开始:" VerticalAlignment= "Center" HorizontalAlignment= "Center" Width= "90" / > < mah: NumericUpDown Width= "200" BorderThickness= "0 0 0 1" Value= "{Binding StartThre}" / > < / StackPanel> < StackPanel Orientation= "Horizontal" Margin= "10 8" > < TextBlock Text= "结束:" VerticalAlignment= "Center" HorizontalAlignment= "Center" Width= "90" / > < mah: NumericUpDown Width= "200" BorderThickness= "0 0 0 1" Value= "{Binding EndThre}" / > < / StackPanel> < / StackPanel> < / GroupBox> < / Border> 后端 private int _StartThre= 128 ; /// <summary> /// 起始阈值 /// </summary> public int StartThre{ get { return _StartThre; } set { Set ( ref _StartThre, value ) ; } } private int _EndThre= 255 ; /// <summary> /// 结束阈值 /// </summary> public int EndtThre{ get { return _EndThre; } set { Set ( ref _EndThre, value ) ; } }