Click or drag to resize

McFeatures Interface

The base class for McPoints, McLines or McRegions objects holding image features

Namespace:  MediaCy.IQL.Features
Assembly:  MediaCy.IQL.Features (in MediaCy.IQL.Features.dll) Version: 10.0.6912.0
Syntax
VB
Public Interface McFeatures
	Inherits IMcFeatures
Remarks
The McFeatures class is the base class common to McPoints, McLines and McRegions. Most of the methods and properties for each of these classes actually comes from the McFeatures base class Events are also fired on both a dispinterface, _DMcFeaturesEvents, and a custom COM interface which should be used by clients where possible (VB always uses the dispinterface). For every event, the ChangeMade event is always fired and then one of the other, more descriptive events is fired. Clients will usually either monitor just the ChangeMade event or just one or two of the others. If all you are interested in is "has the object changed" then just monitor the ChangeMade event; if the mcfcmAppearanceOnly bit is set in the ChangeFlags argument, then the change affects only the display of the feature(s), not their contents. All McFeatures expose the McHasObject interface. If the McHasObject.FirePropertyChangeNotifies property is False, then events will not be fired. If you are doing extensive work on a McFeatures that involves many changes, you should set the McHasObject.FirePropertyChangeNotifies to False and then restore it to its original state before doing your final change on the McFeatures object. This will result in only one event being fired for the changes.
Examples
VB
VERSION 5.00
Begin {C62A69F0-16DC-11CE-9E98-00AA00574A4F} McFeaturesEventsSample 
   Caption         =   "AOI Events"
   ClientHeight    =   2685
   ClientLeft      =   45
   ClientTop       =   330
   ClientWidth     =   4710
   OleObjectBlob   =   "McFeaturesEventsSample.frx":0000
   ShowModal       =   0   'False
   StartUpPosition =   1  'CenterOwner
End





'This is McFeaturesEventsSample.frm
'This file illustrates tracking McFeatures events.
'Here we track the AOI of the ActiveImage (a McRegions,
'which is derived from McFeatures) and display what is going on.
'
'To use this sample, just create a simple form with a multiline
'TextBox control named "Output".  The form's ShowModal property
'should be set to False.  Then import or paste this entire file
'in as the form's code.
'
Option Explicit

Private WithEvents theImages As McImages
Attribute theImages.VB_VarHelpID = -1
Private WithEvents theAOI As McRegions
Attribute theAOI.VB_VarHelpID = -1

'--- Utilities ----
Private Sub SetupActiveImage()
    If ActiveImage Is Nothing Then
        Output.Text = "No Active Image."
        Set theAOI = Nothing
        Exit Sub
    End If
    'ELSE we have an ActiveImage
    Set theAOI = ActiveImage.Aoi
    Output.Text = "The Active Image is " & ActiveImage.DisplayName
End Sub 'SetupActiveImage

'--- UserForm Event Handlers ----

Private Sub UserForm_Initialize()
    Set theImages = Images
    SetupActiveImage
End Sub 'UserForm_Initialize

Private Sub UserForm_Terminate()
    Set theAOI = Nothing
    Set theImages = Nothing
End Sub 'UserForm_Terminate

'--- Images Event Handler ----

Private Sub theImages_Activate(ByVal Image As McImage)
    SetupActiveImage
End Sub 'theImages_Activate

'--- McFeatures Event Handlers ----

Private Sub theAOI_ChangeMade(ByVal FeaturesObject As IMcFeatures, _
    ByVal PropertyChangedID As mcRegionLibPropertyIDs, ByVal ChangeFlags As mcFeaturesChangeMadeEnum, ByVal FeatureAffected As Long)
    'We would usually only track this event or one of the others but not both,
    'because this ChangeMade event is always sent before the others.  However for
    'this sample, we will track all of the McFeaturesEvents

    Dim strT As String
    Select Case PropertyChangedID
        Case ID_IMcFeatures_Selected
            strT = "McFeatures_Selected"
        Case ID_IMcFeatures_FeatureStatusFlags
            strT = "McFeatures_FeatureStatusFlags"
        Case ID_IMcFeatures_RemoveFeature
            strT = "McFeatures_RemoveFeature"
        Case ID_IMcFeatures_SetFeaturePoints
            strT = "McFeatures_SetFeaturePoints"
        Case ID_IMcFeatures_Reset
            strT = "McFeatures_Reset"
        Case ID_IMcFeatures_Move
            strT = "McFeatures_Move"
        Case ID_IMcFeatures_Clip
            strT = "McFeatures_Clip"
        Case ID_IMcFeatures_Merge
            strT = "McFeatures_Merge"
        Case ID_IMcFeatures_MaskOff
            strT = "McFeatures_MaskOff"
        Case ID_IMcFeatures_Intersect
            strT = "McFeatures_Intersect"
        Case ID_IMcFeatures_CleanUpBordersAndNoise
            strT = "McFeatures_CleanUpBordersAndNoise"
        Case ID_IMcFeatures_IMcSpatialCalib
            strT = "McFeatures_IMcSpatialCalib"
        Case ID_IMcFeatures_CopyFrom
            strT = "McFeatures_CopyFrom"
        Case ID_IMcFeatures_SourceFlags
            strT = "McFeatures_SourceFlags"
        Case ID_IMcFeatures_SourceData
            strT = "McFeatures_SourceData"
        Case ID_IMcFeatures_SetFromMask
            strT = "McFeatures_SetFromMask"
        Case ID_IMcFeatures_SetFromMaskMethod
            strT = "McFeatures_SetFromMaskMethod"
        Case ID_IMcRegions_SetBox
            strT = "McRegions_SetBox"
        Case ID_IMcRegions_SetEllipse
            strT = "McRegions_SetEllipse"
        Case ID_IMcRegions_FillHoles
            strT = "McRegions_FillHoles"
        Case ID_IMcRegions_FilterOutlines
            strT = "McRegions_FilterOutlines"
        Case ID_IMcRegions_Holes
            strT = "McRegions_Holes"
        Case ID_IDisplayedObjects_RemoveGraphObj
            strT = "DisplayedObjects_RemoveGraphObj"
        Case ID_IDisplayedObjects_SetPointShape
            strT = "DisplayedObjects_SetPointShape"
        Case ID_IDisplayedObjects_SetLabelText
            strT = "DisplayedObjects_SetLabelText"
        Case ID_IDisplayedObjects_SetLabelOffset
            strT = "DisplayedObjects_SetLabelOffset"
        Case ID_IDisplayedObjects_ImportProperties
            strT = "DisplayedObjects_ImportProperties"
        Case ID_IDisplayedObjects_SetColors
            strT = "DisplayedObjects_SetColors"
        Case ID_IDisplayedObjects_SetStyle
            strT = "DisplayedObjects_SetStyle"
        Case ID_IDisplayedObjects_SetBorderWidth
            strT = "DisplayedObjects_SetBorderWidth"
        Case ID_IDisplayedObjects_SetFillStyle
            strT = "DisplayedObjects_SetFillStyle"
        Case ID_IDisplayedObjects_SetBorderStyle
            strT = "DisplayedObjects_SetBorderStyle"
        Case ID_IDisplayedObjects_SetSelected
            strT = "DisplayedObjects_SetSelected"
        Case ID_IDisplayedObjects_SetLineEnding
            strT = "DisplayedObjects_SetLineEnding"
        Case ID_IMcThreshold_Execute
            strT = "McThreshold_Execute"
        Case Else
    End Select
    If (ChangeFlags And mcfcmUserEdit) <> 0 Then
        strT = strT + " from User Edit"
    End If 'event was caused by a user edit operation
    Output.Text = Output.Text + vbCrLf + strT
End Sub 'theAOI_ChangeMade

Private Sub theAOI_FeatureAdded(ByVal FeaturesObject As IMcFeatures, ByVal FirstIndex As Long, ByVal AddedCount As Long)
    Output.Text = Output.Text + vbCrLf + _
        Str(AddedCount) + " features Added at index " + Str(FirstIndex)
End Sub 'theAOI_FeatureAdded

Private Sub theAOI_FeatureRemoved(ByVal FeaturesObject As IMcFeatures, ByVal Index As Long)
    Output.Text = Output.Text + vbCrLf + _
        "Feature(s) Removed at index " & Str(Index)
End Sub 'theAOI_FeatureRemoved

Private Sub theAOI_Restructured(ByVal FeaturesObject As IMcFeatures, ByVal FeatureCount As Long)
    Output.Text = Output.Text + vbCrLf + _
        "Feature(s) Restructured, leaving " & Str(FeatureCount) & " features."
End Sub 'theAOI_Restructured

Private Sub theAOI_CoordinatesChanged(ByVal FeaturesObject As IMcFeatures, ByVal Index As Long)
    Dim strT As String
    If Index >= 0 Then
        strT = "Feature " & Str(Index) & " coordinates changed.  New bounds are:" + vbCrLf _
            + McToText(FeaturesObject.BoundingRect(Index))
    Else
        strT = "Multiple features moved."
    End If
    Output.Text = Output.Text + vbCrLf + strT
End Sub 'theAOI_CoordinatesChanged

Private Sub theAOI_PropertyChanged(ByVal FeaturesObject As IMcFeatures, ByVal PropertyChangedID As mcRegionLibPropertyIDs, ByVal AppearanceOnly As Boolean, ByVal FeatureAffected As Long)
    'In this example, the PropertyChangedID is displayed by theAOI_ChangeMade event handler
    If AppearanceOnly Then
        Output.Text = Output.Text + " affects appearance only."
    End If
End Sub 'theAOI_PropertyChanged
See Also