Matrix Classe

Définition

Encapsule une matrice affine 3-par-3 qui représente une transformation géométrique. Cette classe ne peut pas être héritée.

public ref class Matrix sealed : MarshalByRefObject, IDisposable
public sealed class Matrix : MarshalByRefObject, IDisposable
type Matrix = class
    inherit MarshalByRefObject
    interface IDisposable
Public NotInheritable Class Matrix
Inherits MarshalByRefObject
Implements IDisposable
Héritage
Implémente

Remarques

dans GDI+ vous pouvez stocker une transformation affine dans un Matrix objet. Étant donné que la troisième colonne d’une matrice qui représente une transformation affine est toujours (0, 0, 1), vous spécifiez uniquement les six nombres dans les deux premières colonnes quand vous construisez un Matrix objet. L’instruction Matrix myMatrix = new Matrix(0, 1, -1, 0, 3, 4) construit la matrice présentée dans l’illustration suivante.

Transformations

Notes

dans .net 6 et versions ultérieures, le package System. drawing. Common, qui comprend ce type, est uniquement pris en charge sur les systèmes d’exploitation Windows. L’utilisation de ce type dans les applications multiplateforme provoque des avertissements au moment de la compilation et des exceptions au moment de l’exécution. Pour plus d’informations, consultez System. Drawing. Common uniquement pris en charge sur Windows.

Transformations composites

Une transformation composite est une séquence de transformations, l’une suivie de l’autre. Tenez compte des matrices et des transformations figurant dans la liste suivante :

Matrice A Faire pivoter de 90 degrés
Matrice B Mise à l’échelle d’un facteur de 2 dans la direction x
Matrice C Translater 3 unités sur l’axe y

Si nous commençons par le point (2, 1) (représenté par la matrice [2 1 1]) et multipliés par A, puis B, puis C, le point (2, 1) subira les trois transformations dans l’ordre indiqué.

[2 1 1] ABC = [-2 5 1]

Au lieu de stocker les trois parties de la transformation composite dans trois matrices distinctes, vous pouvez multiplier A, B et C ensemble pour obtenir une matrice 3 × 3 unique qui stocke l’intégralité de la transformation composite. Supposons que ABC = D. Un point multiplié par D donne le même résultat qu’un point multiplié par A, puis B, puis C.

[2 1 1] D = [-2 5 1]

L’illustration suivante montre les matrices A, B, C et D.

Transformations

Le fait que la matrice d’une transformation composite puisse être formée en multipliant les matrices de transformation individuelles signifie que toute séquence de transformations affinées peut être stockée dans un Matrix objet unique.

Attention

L’ordre d’une transformation composite est important. En général, faire pivoter, puis mettre à l’échelle, puis translater n’est pas identique à l’échelle, faire pivoter, puis traduire. De même, l’ordre de multiplication des matrices est important. En général, ABC n’est pas le même que le BAA.

La Matrix classe fournit plusieurs méthodes pour générer une transformation composite : Multiply ,,,, Rotate RotateAt Scale Shear et Translate . L’exemple suivant crée la matrice d’une transformation composite qui fait pivoter d’abord 30 degrés, puis met à l’échelle d’un facteur de 2 sur l’axe y, puis convertit 5 unités dans la direction x :

Matrix myMatrix = new Matrix();
myMatrix.Rotate(30);
myMatrix.Scale(1, 2, MatrixOrder.Append);
myMatrix.Translate(5, 0, MatrixOrder.Append);
Dim myMatrix As New Matrix()
myMatrix.Rotate(30)
myMatrix.Scale(1, 2, MatrixOrder.Append)
myMatrix.Translate(5, 0, MatrixOrder.Append)

Constructeurs

Matrix()

Initialise une nouvelle instance de la classe Matrix en tant que matrice d'identité.

Matrix(Matrix3x2)

Construit un à Matrix l’aide du spécifié matrix .

Matrix(Rectangle, Point[])

Initialise une nouvelle instance de la classe Matrix en lui assignant la transformation géométrique définie par le rectangle et le tableau de points spécifiés.

Matrix(RectangleF, PointF[])

Initialise une nouvelle instance de la classe Matrix en lui assignant la transformation géométrique définie par le rectangle et le tableau de points spécifiés.

Matrix(Single, Single, Single, Single, Single, Single)

Initialise une nouvelle instance de la classe Matrix avec les éléments spécifiés.

Propriétés

Elements

Obtient un tableau de valeurs à virgule flottante qui représente les éléments de ce Matrix.

IsIdentity

Obtient une valeur indiquant si ce Matrix est la matrice d'identité.

IsInvertible

Obtient une valeur indiquant si ce Matrix peut être inversé.

MatrixElements

Obtient ou définit les éléments de la matrice.

OffsetX

Obtient la valeur de translation x (la valeur dx, ou l'élément à l'intersection de la troisième ligne et de la première colonne) de ce Matrix.

OffsetY

Obtient la valeur de translation y (la valeur dy ou l'élément à l'intersection de la troisième ligne et de la deuxième colonne) de cet objet Matrix.

Méthodes

Clone()

Crée une copie exacte de Matrix.

CreateObjRef(Type)

Crée un objet contenant toutes les informations appropriées requises pour générer un proxy permettant de communiquer avec un objet distant.

(Hérité de MarshalByRefObject)
Dispose()

Libère toutes les ressources utilisées par ce Matrix.

Equals(Object)

Vérifie si l'objet spécifié est un Matrix identique à ce Matrix.

Finalize()

Autorise un objet à tenter de libérer des ressources et à exécuter d'autres opérations de nettoyage avant qu'il ne soit récupéré par une opération garbage collection.

GetHashCode()

Retourne un code de hachage.

GetLifetimeService()
Obsolète.

Récupère l'objet de service de durée de vie en cours qui contrôle la stratégie de durée de vie de cette instance.

(Hérité de MarshalByRefObject)
GetType()

Obtient le Type de l'instance actuelle.

(Hérité de Object)
InitializeLifetimeService()
Obsolète.

Obtient un objet de service de durée de vie pour contrôler la stratégie de durée de vie de cette instance.

(Hérité de MarshalByRefObject)
Invert()

Inverse ce Matrix, le cas échéant.

MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
MemberwiseClone(Boolean)

Crée une copie superficielle de l'objet MarshalByRefObject actuel.

(Hérité de MarshalByRefObject)
Multiply(Matrix)

Multiplie ce Matrix par la matrice spécifiée dans le paramètre matrix en ajoutant le Matrix spécifié au début.

Multiply(Matrix, MatrixOrder)

Multiplie ce Matrix par la matrice spécifiée par le paramètre matrix, dans l'ordre spécifié par le paramètre order.

Reset()

Réinitialise ce Matrix en lui assignant les éléments de la matrice d'identité.

Rotate(Single)

Ajoute une rotation égale à l'angle spécifié, dans le sens des aiguilles d'une montre et par rapport à l'origine, au début de ce Matrix.

Rotate(Single, MatrixOrder)

Applique une rotation égale à la valeur spécifiée par le paramètre angle, dans le sens des aiguilles d'une montre et par rapport à l'origine (coordonnées x et y égales à zéro), pour ce Matrix.

RotateAt(Single, PointF)

Applique une rotation dans le sens des aiguilles d'une montre et par rapport au point spécifié par le paramètre Matrix à ce point en l'ajoutant au début.

RotateAt(Single, PointF, MatrixOrder)

Applique une rotation dans le sens des aiguilles d'une montre et par rapport au point spécifié à ce Matrix dans l'ordre spécifié.

Scale(Single, Single)

Applique le vecteur d'échelle spécifié à ce Matrix en l'ajoutant au début.

Scale(Single, Single, MatrixOrder)

Applique le vecteur d'échelle spécifié (scaleX et scaleY) à ce Matrix dans l'ordre spécifié.

Shear(Single, Single)

Applique le vecteur d'inclinaison spécifié à ce Matrix en l'ajoutant au début de la transformation d'inclinaison.

Shear(Single, Single, MatrixOrder)

Applique le vecteur d'inclinaison spécifié à ce Matrix dans l'ordre spécifié.

ToString()

Retourne une chaîne qui représente l'objet actuel.

(Hérité de Object)
TransformPoints(Point[])

Applique la transformation géométrique représentée par ce Matrix à un tableau de points spécifié.

TransformPoints(PointF[])

Applique la transformation géométrique représentée par ce Matrix à un tableau de points spécifié.

TransformVectors(Point[])

Applique uniquement les composants d'échelle et de rotation de ce Matrix au tableau de points spécifié.

TransformVectors(PointF[])

Multiplie chaque vecteur d'un tableau par la matrice. Les éléments de translation de cette matrice (troisième ligne) sont ignorés.

Translate(Single, Single)

Applique le vecteur de translation spécifié (offsetX et offsetY) à ce Matrix en l'ajoutant au début.

Translate(Single, Single, MatrixOrder)

Applique le vecteur de translation spécifié à ce Matrix dans l'ordre spécifié.

VectorTransformPoints(Point[])

Multiplie chaque vecteur d'un tableau par la matrice. Les éléments de translation de cette matrice (troisième ligne) sont ignorés.

S’applique à

Voir aussi