InkCollector Class

InkCollector Class

Represents the object that is used to capture ink from available tablet devices.

Members

Enumeration Description
InkApplicationGesture Defines values for the set of available application-specific gestures.
InkCollectionMode Defines values that determine whether ink, gestures, or ink and gestures are recognized as the user writes.
InkCollectorEventInterest Defines values that set the interest in ink collector events.
InkMouseButton Defines values that specify which mouse button was pressed.
InkMousePointer Defines values that specify the type of mouse pointer to appear.
InkShiftKeyModifierFlags Defines values that specify which modifier key was pressed.
InkSystemGesture Defines values that set the interest in a set of system-specific gestures.
Event Description
CursorButtonDown Occurs when the InkCollector detects a cursor button that is down.
CursorButtonUp Occurs when the InkCollector detects a cursor button that is up.
CursorDown Occurs when the cursor tip contacts the digitizing tablet surface.
CursorInRange Occurs when a cursor enters the physical detection range (proximity) of the tablet context.
CursorOutOfRange Occurs when the cursor leaves the physical detection range (proximity) of the tablet context.
DoubleClick Occurs when the InkCollector object is double-clicked.
Gesture Occurs when an application-specific gesture is recognized.
MouseDown Occurs when the mouse pointer is over the InkCollector object and a mouse button is pressed.
MouseMove Occurs when the mouse pointer is moved over the InkCollector object.
MouseUp Occurs when the mouse pointer is over the InkCollector object and a mouse button is released.
MouseWheel Occurs when the mouse wheel moves while the InkCollector object has focus.
NewInAirPackets Occurs when an in-air packet is seen, which happens when a user moves a pen near the tablet and the cursor is within the InkCollector object's window or the user moves a mouse within the InkCollector object object's associated window.
NewPackets Occurs when the InkCollector object receives packets.
Stroke Occurs when the user finishes drawing a new stroke on any tablet.
SystemGesture Occurs when a system gesture is recognized.
TabletAdded Occurs when a Tablet is added to the system.
TabletRemoved Occurs when a Tablet is removed from the system.
Method Description
GetEventInterest Returns the current state of a particular InkCollector object event, that is, whether the event is being listened for or used.
GetGestureStatus Returns whether the InkCollector object is interested in a particular gesture.
GetWindowInputRectangle Retrieves the window rectangle, in pixels, within which ink is drawn.
SetAllTabletsMode This mode allows the InkCollector object object to collect ink from any tablet attached to the Tablet PC.
SetEventInterest Sets whether a specific event should be listened for or used.
SetGestureStatus Sets the interest of the InkCollector objectl in a known gesture.
SetSingleTabletIntegratedMode This mode allows the InkCollector object object to collect ink from only one tablet. Ink from other tablets is ignored by the InkCollector object.
SetWindowInputRectangle Sets the window rectangle, in pixels, to use to map drawn ink to the window.
Property Description
AutoRedraw Gets or sets a value that specifies whether the InkCollector repaints the ink when the window is invalidated.
CollectingInk Gets a value that specifies whether ink is currently being drawn on an InkCollector object.
CollectionMode Gets or sets the collection mode that determines whether ink, gestures, or both are recognized as the user writes.
Cursors Gets the Cursors collection that is available for use in the inking region.
DefaultDrawingAttributes Gets or sets the default InkDrawingAttributes object, which specifies the drawing attributes that are used when drawing and displaying ink.
DesiredPacketDescription Gets or sets interest in aspects of the packets associated with ink drawn on the InkCollector object.
DynamicRendering Gets or sets a value that indicates whether ink is rendered as it is drawn.
Enabled Gets or sets a value that specifies whether the InkCollector object collects pen input.
Handle Gets or sets the handle of the window to which the InkCollector object is attached.
Ink Gets or sets the InkDisp object that is associated with the InkCollector object.
MarginX Gets or sets the margins along the x-axis, in pixels.
MarginY Gets or sets the margins along the y-axis, in pixels.
MouseIcon Gets or sets the current custom mouse icon.
MousePointer Gets or sets a value that indicates the type of mouse pointer that appears when the mouse is over a particular part of the object.
Renderer Gets or sets the InkRenderer object that is used to draw ink.
SupportHighContrastInk Gets or sets a value that specifies whether ink is rendered as just one color when the system is in High Contrast mode.
Tablet Gets the tablet device that the InkCollector object is currently using to collect input.

Remarks

This object can be instantiated by calling the CoCreateInstance method in C++ or by using the New keyword in Microsoft® Visual Basic® 6.0.

The InkCollector object collects only ink and gestures that are input into the specific window with which it is associated. The sole purpose of the InkCollector is to collect ink from the hardware (for example, through a IInkCursor and IInkTablet object) and deliver it to an application. It essentially acts as the source that distributes ink into one or many different InkDisp objects, which act as container that hold the distributed ink.

To use an InkCollector, you create it, tell it on which window to collect drawn ink, and enable it. After it is enabled, it can be set to collect in only one of three modes (the mode is specified in the InkCollectionMode enumeration):

  • InkOnly, in which a IInkStrokeDisp object is created.
  • GestureOnly, in which a IInkGesture object is created.
  • InkAndGesture, in which a stroke, a gesture, or potentially both are created, depending on how the application handles events.

This means that, for every movement of a cursor that is within range of a tablet, the InkCollector always collects either a stroke or a gesture and sometimes both. Gesture support is built in using the Microsoft gesture recognizer.

An InkCollector handles all tablet input. Ink can be collected from all attached tablets (including the mouse) simultaneously. Changes in the IInkCursor and IInkCursorButton objects can cause InkCollector object to fire an event.

An InkCollector also manages the list of cursors that it encounters during its existence. When the InkCollector encounters a new cursor, the CursorInRange event fires with the newCursor parameter set to VARIANT_TRUE. Applications use the InkCollector to manage new cursors.

More than one InkCollector can be associated with a particular window handle, even if their collection areas, set in the constructor or with the SetWindowInputRectangle method, overlap. However, the only way this scenario works is if each InkCollector calls SetSingleTabletIntegratedMode and uses a unique tablet. This behavior makes it easy to store ink in a separate object for each tablet.

An error occurs if the window input rectangle of one enabled InkCollector's (set with the Enabled property) overlaps the window input rectangle of another enabled InkCollector.

Note: Overlap can occur without an error as long as only one of the input rectangles is enabled at any known time.

The MouseDown, MouseMove, MouseUp, and MouseWheel events return x- and y-coordinates in pixels, and not the HIMETRIC units that are associated with the ink space. This is because these events replace the mouse events of pen-unaware applications and these applications understand only pixels.

The InkCollector behaves differently in applications created by using Visual Basic 6.0 than those created by using Microsoft Foundation Classes (MFC). For more information about these behaviors, see Ink Collection.

Note: The InkCollector object cannot be safely released on a non-UI thread.

To improve your application's performance, dispose your InkCollector object when it is no longer needed.

COM Implementation

This object implements the IInkCollector COM interface.