Measure Method
Measure Method |
Calculates the rectangle on the device context that would contain a collection of strokes if the strokes were drawn with the InkRenderer object using the DrawStroke method.
Declaration
[C++]
HRESULT Measure (
[in] IInkStrokes* strokes,
[out, retval] IInkRectangle **Rectangle
);
[Microsoft® Visual Basic® 6.0]
Public Function Measure( _
strokes As InkStrokes _
) As InkRectangle
Parameters
strokes
[in] The collection of strokes to measure.
Rectangle
[out] Returns the rectangle on the device context that would contain the strokes if they were drawn with the DrawStroke method of the InkRenderer object. The strokes must contain x- and y-coordinates to calculate the rectangle. Otherwise, the method returns an empty rectangle.
Return Value
HRESULT value | Description |
---|---|
S_OK | Success. |
E_POINTER | A parameter contained an invalid pointer. |
E_INVALIDARG | Invalid display handle. |
E_INK_INCOMPATIBLE_OBJECT | The strokes parameter does not point to a valid object. |
E_INK_MISMATCHED_INK_OBJECT | The strokes parameter is associated with a different InkDisp object. |
E_INK_EXCEPTION | An exception occurred inside the method. |
E_UNEXPECTED | Unexpected parameter or property type. |
Remarks
This is accurate only if you pass the same arguments to both Measure and DrawStroke.
Since the bounding box is affected by the pen width, this width is scaled appropriately for the InkRenderer's view transform. To do this, the pen width is multiplied by the square root of the determinant of the view transform. The height and width of the bounding box are expanded by half this amount in each direction, and the right and bottom sides are incremented by one.
For example, consider that the pen width is originally 53, the square root of the determinant of the view transform is 50, and the bounding box is (0, 0, 1000, 1000). The pen width adjustment to the bounding box in each direction is calculated as (53 * 50) / 2, and the right and bottom sides are incremented by one. This results in a rendered bounding box of (-1325, -1325, 2326, 2326).
Example
[Visual Basic 6.0]
This Visual Basic 6.0 example gets the bounding rectangle for the strokes in the InkCollector, theInkCollector.
Dim theMeasure As InkRectangle
Set theMeasure = theInkCollector.Renderer.Measure(theInkCollector.Ink.Strokes)