Поделиться через


Stroke.Transform - метод (Matrix, Boolean)

Обновлен: Ноябрь 2007

Applies a linear transformation to a Stroke object, with the option of applying the transformation to the pen width.

Пространство имен:  Microsoft.Ink
Сборка:  Microsoft.Ink (в Microsoft.Ink.dll)

Синтаксис

'Декларация
Public Sub Transform ( _
    inkTransform As Matrix, _
    applyOnPenWidth As Boolean _
)
'Применение
Dim instance As Stroke
Dim inkTransform As Matrix
Dim applyOnPenWidth As Boolean

instance.Transform(inkTransform, applyOnPenWidth)
public void Transform(
    Matrix inkTransform,
    bool applyOnPenWidth
)
public:
void Transform(
    Matrix^ inkTransform, 
    bool applyOnPenWidth
)
public void Transform(
    Matrix inkTransform,
    boolean applyOnPenWidth
)
public function Transform(
    inkTransform : Matrix, 
    applyOnPenWidth : boolean
)

Параметры

  • 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 object.

    Value

    Meaning

    true

    The transformation applies to both the points and pen width.

    false

    The transformation applies only to the points.

Заметки

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.

Примеры

This C# example scales a Stroke object, theStroke, by a factor of two around the center of the stroke'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 = theStroke.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 stroke
theStroke.Transform(inkTransform, true);

This Microsoft Visual Basic .NET example scales a Stroke object, theStroke, by a factor of two around the center of the stroke'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 = theStroke.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 stroke
theStroke.Transform(inkTransform, True)

Платформы

Windows Vista

Среды .NET Framework и .NET Compact Framework поддерживают не все версии каждой платформы. Поддерживаемые версии перечислены в разделе Требования к системе для .NET Framework.

Сведения о версии

.NET Framework

Поддерживается в версии: 3.0

См. также

Ссылки

Stroke Класс

Stroke - члены

Transform - перегрузка

Microsoft.Ink - пространство имен

Transform

Stroke.Move

Stroke.Rotate

Strokes.Transform