Partager via


Strokes.Transform Method

Strokes.Transform Method

Applies a linear transformation to a Strokes collection.

Definition

Visual Basic .NET Public Sub Transform( _
ByVal inkTransform As Matrix, _
ByVal applyOnPenWidth As Boolean _
)
C# public void Transform(
Matrix inkTransform,
bool applyOnPenWidth
);
Managed C++ public: void Transform(
Matrix *inkTransform,
bool *applyOnPenWidth
);

Parameters

> > >
inkTransform System.Drawing.Drawing2D.Matrix. The System.Drawing.Drawing2D.Matrix Leave Site transform to use on the Strokes collection.
applyOnPenWidth System.Boolean. The Boolean value that indicates whether to apply the transform to the width of the ink in the DrawingAttributes of the Stroke objects in the Strokes collection.

true The transformation applies to both the points and pen width.
false The transformation applies only to the points.

Exceptions

ObjectDisposedException Leave Site:

Remarks

The linear transform can represent scaling, rotation, translation, and combinations of transformations.

If the pen width is scaled appropriately for the transform, the drawn pen width is calculated by multiplying the specified pen width (or default of 53, if unspecified) by the square root of the determinant of the transform.

Examples

[C#]

This C# example scales the Strokes collection attached to an InkOverlay object, theInkOverlay, by a factor of two around the center of the Strokes collection's bounding box. The width of the ink is also scaled by a factor of two.

using System.Drawing.Drawing2D;
//...
Matrix inkTransform = new Matrix();
Rectangle inkBounds = theInkOverlay.Ink.Strokes.GetBoundingBox();
PointF center = new PointF(0.5f * (inkBounds.Left + inkBounds.Right),
                           0.5f * (inkBounds.Top + inkBounds.Bottom));
// Translate to center of bounding box
inkTransform.Translate(center.X, center.Y);
// Scale by factor of 2
inkTransform.Scale(2.0F, 2.0F);
// Translate back
inkTransform.Translate(-center.X, -center.Y);
// Transform strokes
theInkOverlay.Ink.Strokes.Transform(inkTransform, true);
                

[VB.NET]

This Microsoft® Visual Basic® .NET example scales the Strokes collection attached to an InkOverlay object, theInkOverlay, by a factor of two around the center of the Strokes collection's bounding box. The width of the ink is also scaled by a factor of two.

Imports System.Drawing.Drawing2D
'...
Dim inkTransform As New Matrix()
Dim inkBounds As Rectangle = theInkOverlay.Ink.Strokes.GetBoundingBox()
Dim center As New PointF(0.5F * (inkBounds.Left + inkBounds.Right), _
                         0.5F * (inkBounds.Top + inkBounds.Bottom))
'Translate to center of bounding box
inkTransform.Translate(center.X, center.Y)
'Scale by a factor of 2
inkTransform.Scale(2.0F, 2.0F)
'Translate back
inkTransform.Translate(-center.X, -center.Y)
'Transform strokes
theInkOverlay.Ink.Strokes.Transform(inkTransform, True)
                

See Also