11.7 为可视化添加和自定义 HSmartWindowControl

在大多数应用程序中,您都希望至少将某些结果可视化。因此,首先要双击工具栏上的相应图标,将 HSmartWindowControl 添加到窗体中。这时会出现一个空(黑色)窗口(见 图 11.4 )。

HALCON XL 应用:  ! 
请注意,只有在需要 HALCON XL 功能时才可使用

如果您已经添加了控件的 HALCON 版本,但现在想使用 HALCON XL,只需在解决方案资源管理器中删除对 HALCON/.NET DLL 的引用,然后添加对 HALCON/.NET XL DLL 的引用即可。

如果您想自动调整图像,而无需双击,可以使用算子 SetPart 将部件调整为最后显示的图像的大小:

  img.DispObj(window);

下面按字母顺序列出了该控件特有的属性。这些属性可在属性窗口中调整(见 图 11.4 )。请注意,某些属性仅适用于 HSmartWindowControlWPF 元素。HSmartWindowControlWPF 的所有属性都支持数据绑定。

请勿修改 Visual Studio 中的 "Brush" 属性。HSmartWindowControlWPF 禁用了这些属性,以防止出现不必要的副作用。

图 11.4: 调整 HSmartWindowControlWPF 的属性

  • HColor
    指定 HRegion 和 HXLDCont 对象的颜色。
  • HColored
    指定以不同颜色显示多个 HRegion 或 HXLDCont 对象的颜色。
  • HDisableAutoResize
    如果设置为真,图像在显示时不会自动缩放。
  • HDisplayCurrentObject
    显示指定的HImage或HObject。
  • HDoubleClickToFitContent
    如果设置为真(默认值),双击将调整 HSmartWindowControl 内容的大小以适应控件的大小。如果 HKeepAspectRatio 也设置为真,则会重新调整内容大小,以保持宽高比。
  • HDraw
    指定 HRegion 对象的填充模式。如果 HDraw 设置为 "fill填充",输出区域将被填充;如果设置为 "margin边缘",则只显示轮廓。
  • HDrawingObjectsModifier
    指定与绘图对象交互的修改键。如果设置了修改键,用户只能在按下修改键的同时与绘图对象交互。这在与 XLD 绘图对象交互时尤其有用。默认情况下,它被设置为 None 。其他可能的值为 AltCtrlShift
  • HFont
    指定用于在 HSmartWindowControlWPF 中显示消息的字体。
  • HImagePart
    指定相应 HALCON 窗口的图像部分。请注意,图像部分是用 XYWidthHeight 值指定的,而相应的算子 SetPart 需要四个角点。请注意,您可以随时在应用程序中修改显示的部分,例如,显示图像的缩放部分。有关实际可视化结果的更多信息,参见 "可视化" 一节
  • HKeepAspectRatio
    如果设置为真(默认值),HSmartWindowControl 的内容将在控件调整大小或缩放时保持其宽高比。宽高比是设计时通过 HImagePart 设置的宽度/高度之商。
  • HLineStyle
    指定 HRegion 和 HXLDCont 对象的轮廓模式。
  • HLineWidth
    指定 HRegion 和 HXLDCont 对象的轮廓厚度。
  • HMoveContent
    如果设置为真(默认值),则可以使用鼠标拖动 HALCON 窗口的内容。
  • HZoomContent
    指定鼠标滚轮的行为。如果设置为 WheelForwardZoomsIn(默认值),则向前和向后移动鼠标滚轮时,HALCON 窗口的内容将分别放大和缩小。如果将该属性设置为 WheelBackwardZoomsIn,则行为相反。如果设置为 Off ,则将禁用鼠标滚轮缩放。
  • HZoomFactor
    指定使用鼠标滚轮缩放时的步长。默认值为 1.41。数值必须大于 1,小于或等于 100。数值越大,缩放速度越快。

  • HSmartWindowControlWPF 可用于实现模型-视图-视模型(MVVM)模式,因为该控件的所有属性都支持数据绑定。通过向 Items 集合添加对象或设置 ItemsSource 属性,您可以在纯 XAML 代码中指定控件应显示的内容。下面的示例说明了如何显示图像、将一个区域染成 "洋红色" 并显示一条文本信息:

    <ha:HSmartWindowControlWPF HDraw="fill">
      <!--Iconic items can be added using HIconicDisplayObjectWPFs-->
      <ha:HIconicDisplayObjectWPF IconicObject="{Binding DisplayImage}"/>
      <!--Also with individual drawing properties-->
      <ha:HIconicDisplayObjectWPF IconicObject="{Binding DisplayRegion}"
      HDraw="margin" HColor="magenta"/>
      <!--Messages can be displayed using HMessageDisplayObjectWPFs-->
      <ha:HMessageDisplayObjectWPF HMessageText="{Binding ImageName}"/>
    </ha:HSmartWindowControlWPF>
    

    请注意,DisplayImageDisplayRegionImageName 必须存在于 HSmartWindowControlWPF 的数据上下文中。