Matrix Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Encapsule une matrice affine de 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
La Matrix classe encapsule une matrice affine de 3 par 3 qui représente une transformation géométrique.
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 lorsque vous construisez un objet Matrix. L’instruction Matrix myMatrix = new Matrix(0, 1, -1, 0, 3, 4) construit la matrice indiquée dans la figure suivante.
Note
Dans .NET 6 et versions ultérieures, le package System.Drawing.Common, qui inclut ce type, n’est pris en charge que sur les systèmes d’exploitation Windows. L’utilisation de ce type dans les applications multiplateformes provoque des avertissements au moment de la compilation et des exceptions d’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. Considérez les matrices et les transformations dans la liste suivante :
| Matrix | Transformation |
|---|---|
| Matrice A | Pivoter à 90 degrés |
| Matrice B | Mettre à l’échelle par un facteur de 2 selon l'axe x |
| Matrice C | Déplacer 3 unités dans la direction y |
Si vous commencez par le point (2, 1) - représenté par la matrice [2 1 1] - et multipliez par A, puis B, puis C, le point (2, 1) subira les trois transformations dans l’ordre répertorié.
[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 toute la transformation composite. Supposons ABC = D. Ensuite, 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.
Le fait que la matrice d’une transformation composite peut être formée en multipliant les matrices de transformation individuelles signifie que toute séquence de transformations affine peut être stockée dans un seul objet Matrix.
Caution
L’ordre d’une transformation composite est important. En général, effectuer une rotation, puis une mise à l’échelle, puis une translation n’est pas la même chose qu’effectuer une mise à l’échelle, suivie d’une rotation, puis d’une translation. De même, l’ordre de multiplication des matrices est important. En général, ABC n’est pas identique à BAC.
La classe Matrix fournit plusieurs méthodes pour créer une transformation composite : Multiply, Rotate, RotateAt, Scale, Shearet Translate. L’exemple suivant crée la matrice d’une transformation composite qui d'abord effectue une rotation de 30 degrés, puis applique une mise à l'échelle par un facteur de 2 dans la direction y, et enfin se déplace de 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
| Nom | Description |
|---|---|
| Matrix() |
Initialise une nouvelle instance de la Matrix classe comme matrice d’identité. |
| Matrix(Matrix3x2) |
Construit une Matrix utilisation de l’objet spécifié |
| Matrix(Rectangle, Point[]) |
Initialise une nouvelle instance de la Matrix classe à 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 Matrix classe à 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 Matrix classe avec les éléments spécifiés. |
Propriétés
| Nom | Description |
|---|---|
| Elements |
Obtient un tableau de valeurs à virgule flottante qui représente les éléments de ce Matrix. |
| IsIdentity |
Obtient une valeur indiquant s’il s’agit Matrix de la matrice d’identité. |
| IsInvertible |
Obtient une valeur indiquant si cela Matrix est inversé. |
| MatrixElements |
Obtient ou définit les éléments de la matrice. |
| OffsetX |
Obtient la valeur de traduction x (la valeur dx, ou l’élément de la troisième ligne et de la première colonne) de ce Matrix. |
| OffsetY |
Obtient la valeur de traduction y (la valeur dy, ou l’élément de la troisième ligne et de la deuxième colonne) de ce Matrix. |
Méthodes
| Nom | Description |
|---|---|
| Clone() |
Crée une copie exacte de ce Matrix. |
| CreateObjRef(Type) |
Crée un objet qui contient toutes les informations pertinentes requises pour générer un proxy utilisé pour communiquer avec un objet distant. (Hérité de MarshalByRefObject) |
| Dispose() |
Libère toutes les ressources utilisées par ce Matrixfichier . |
| Equals(Object) |
Teste si l’objet spécifié est un Matrix et est identique à celui-ci Matrix. |
| Finalize() |
Permet à un objet d’essayer de libérer des ressources et d’effectuer d’autres opérations de nettoyage avant qu’il ne soit récupéré par garbage collection. |
| GetHashCode() |
Retourne un code de hachage. |
| GetLifetimeService() |
Obsolète.
Récupère l’objet de service de durée de vie actuel qui contrôle la stratégie de durée de vie de cette instance. (Hérité de MarshalByRefObject) |
| GetType() |
Obtient la 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 cela Matrix, s’il est invertible. |
| MemberwiseClone() |
Crée une copie superficielle du Objectactuel. (Hérité de Object) |
| MemberwiseClone(Boolean) |
Crée une copie superficielle de l’objet actuel MarshalByRefObject . (Hérité de MarshalByRefObject) |
| Multiply(Matrix, MatrixOrder) |
Multiplie cela Matrix par la matrice spécifiée dans le |
| Multiply(Matrix) |
Multiplie cette valeur Matrix par la matrice spécifiée dans le |
| Reset() |
Réinitialise cela Matrix pour avoir les éléments de la matrice d’identité. |
| Rotate(Single, MatrixOrder) |
Applique une rotation au niveau des aiguilles d’une montre d’une quantité spécifiée dans le |
| Rotate(Single) |
Prépendée à cette Matrix rotation dans le sens des aiguilles d’une montre, autour de l’origine et par l’angle spécifié. |
| RotateAt(Single, PointF, MatrixOrder) |
Applique une rotation au niveau des aiguilles d’une montre sur le point spécifié dans Matrix l’ordre spécifié. |
| RotateAt(Single, PointF) |
Applique une rotation au niveau des aiguilles d’une montre autour Matrix du point spécifié dans le |
| Scale(Single, Single, MatrixOrder) |
Applique le vecteur d’échelle spécifié ( |
| Scale(Single, Single) |
Applique le vecteur d’échelle spécifié à ceci Matrix en prédéfinissant le vecteur d’échelle. |
| Shear(Single, Single, MatrixOrder) |
Applique le vecteur de cisaillement spécifié dans Matrix l’ordre spécifié. |
| Shear(Single, Single) |
Applique le vecteur de cisaillement spécifié à ceci Matrix en précédant la transformation de shérifie. |
| 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 ceci Matrix à un tableau de points spécifié. |
| TransformPoints(PointF[]) |
Applique la transformation géométrique représentée par ceci Matrix à un tableau de points spécifié. |
| TransformPoints(ReadOnlySpan<Point>) |
Applique la transformation géométrique représentée par ceci Matrix à un tableau de points spécifié. |
| TransformPoints(ReadOnlySpan<PointF>) |
Applique la transformation géométrique représentée par ceci Matrix à un tableau de points spécifié. |
| TransformVectors(Point[]) |
Applique uniquement l’échelle et la rotation des composants de celui-ci Matrix au tableau de points spécifié. |
| TransformVectors(PointF[]) |
Multiplie chaque vecteur dans un tableau par la matrice. Les éléments de traduction de cette matrice (troisième ligne) sont ignorés. |
| TransformVectors(ReadOnlySpan<Point>) |
Multiplie chaque vecteur dans un tableau par la matrice. Les éléments de traduction de cette matrice (troisième ligne) sont ignorés. |
| TransformVectors(ReadOnlySpan<PointF>) |
Multiplie chaque vecteur dans un tableau par la matrice. Les éléments de traduction de cette matrice (troisième ligne) sont ignorés. |
| Translate(Single, Single, MatrixOrder) |
Applique le vecteur de traduction spécifié à ceci Matrix dans l’ordre spécifié. |
| Translate(Single, Single) |
Applique le vecteur de traduction spécifié ( |
| VectorTransformPoints(Point[]) |
Multiplie chaque vecteur dans un tableau par la matrice. Les éléments de traduction de cette matrice (troisième ligne) sont ignorés. |
| VectorTransformPoints(ReadOnlySpan<Point>) |
Multiplie chaque vecteur dans un tableau par la matrice. Les éléments de traduction de cette matrice (troisième ligne) sont ignorés. |