Matrix Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Hermetyzuje macierz 3-by-3 affine reprezentującą transformację geometryczną. Klasa ta nie może być dziedziczona.
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
- Dziedziczenie
- Implementuje
Uwagi
Klasa Matrix hermetyzuje macierz afiniczną 3-by-3 reprezentującą transformację geometryczną.
W GDI+można przechowywać przekształcenie affine w Matrix obiekcie. Ponieważ trzecia kolumna macierzy reprezentująca przekształcenie affine jest zawsze (0, 0, 1), podczas konstruowania obiektu Matrix należy określić tylko sześć liczb w pierwszych dwóch kolumnach. Polecenie Matrix myMatrix = new Matrix(0, 1, -1, 0, 3, 4) konstruuje macierz pokazaną na poniższym rysunku.
Note
W wersjach .NET 6 i nowszych pakiet System.Drawing.Common, który zawiera ten typ, jest obsługiwany tylko w systemach operacyjnych Windows. Użycie tego typu w aplikacjach międzyplatformowych powoduje ostrzeżenia w czasie kompilacji i wyjątki czasu wykonywania. Aby uzyskać więcej informacji, zobacz System.Drawing.Common supported only on Windows (Obsługiwane tylko w systemie Windows).
Przekształcenia złożone
Transformacja złożona to sekwencja przekształceń, po której następuje druga. Rozważ macierze i przekształcenia na poniższej liście:
| Matrix | Przekształcenie |
|---|---|
| Macierz A | Obróć o 90 stopni |
| Macierz B | Skalowanie według współczynnika 2 w kierunku x |
| Macierz C | Przesuń 3 jednostki w osi y |
Jeśli zaczniesz od punktu (2, 1) - reprezentowanego przez macierz [2 1 1] - i pomnożysz przez A, następnie B, A, a następnie C, punkt (2, 1) przejdzie trzy przekształcenia w podanej kolejności.
[2 1 1]ABC = [-2 5 1]
Zamiast przechowywać trzy części transformacji złożonej w trzech oddzielnych macierzach, można pomnożyć A, B i C razem, aby uzyskać pojedynczą macierz 3×3, która przechowuje całą transformację złożoną. Załóżmy, że ABC = D. Następnie punkt pomnożony przez D daje taki sam wynik jak punkt pomnożony przez A, a następnie B, a następnie C.
[2 1 1]D = [-2 5 1]
Poniższa ilustracja przedstawia macierze A, B, C i D.
Fakt, że macierz przekształcenia złożonego można utworzyć przez pomnożenie poszczególnych macierzy transformacji oznacza, że każda sekwencja przekształceń affine może być przechowywana w jednym obiekcie Matrix.
Caution
Kolejność transformacji złożonej jest ważna. Ogólnie rzecz biorąc, obróć, potem skaluj, a następnie przesuń to nie to samo co skaluj, potem obróć, a następnie przesuń. Podobnie kolejność mnożenia macierzy jest ważna. Ogólnie rzecz biorąc, ABC nie jest taki sam jak BAC.
Klasa Matrix udostępnia kilka metod tworzenia transformacji złożonej: Multiply, Rotate, RotateAt, Scale, Sheari Translate. Poniższy przykład tworzy macierz transformacji złożonej, która najpierw obraca o 30 stopni, następnie skaluje przez współczynnik 2 w kierunku y, a na końcu przesuwa o 5 jednostek w kierunku 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)
Konstruktory
| Nazwa | Opis |
|---|---|
| Matrix() |
Inicjuje Matrix nowe wystąpienie klasy jako macierz tożsamości. |
| Matrix(Matrix3x2) |
Konstruuje Matrix użycie określonego |
| Matrix(Rectangle, Point[]) |
Inicjuje nowe wystąpienie Matrix klasy do przekształcenia geometrycznego zdefiniowanego przez określony prostokąt i tablicę punktów. |
| Matrix(RectangleF, PointF[]) |
Inicjuje nowe wystąpienie Matrix klasy do przekształcenia geometrycznego zdefiniowanego przez określony prostokąt i tablicę punktów. |
| Matrix(Single, Single, Single, Single, Single, Single) |
Inicjuje nowe wystąpienie klasy z określonymi Matrix elementami. |
Właściwości
| Nazwa | Opis |
|---|---|
| Elements |
Pobiera tablicę wartości zmiennoprzecinkowych reprezentujących elementy tego Matrixelementu . |
| IsIdentity |
Pobiera wartość wskazującą, czy jest to Matrix macierz tożsamości. |
| IsInvertible |
Pobiera wartość wskazującą, czy jest to Matrix niewzględne. |
| MatrixElements |
Pobiera lub ustawia elementy macierzy. |
| OffsetX |
Pobiera wartość translacji x (wartość dx lub element w trzecim wierszu i pierwszej kolumnie) tego Matrixelementu . |
| OffsetY |
Pobiera wartość tłumaczenia y (wartość dy lub element w trzecim wierszu i drugiej kolumnie) tego Matrixelementu . |
Metody
| Nazwa | Opis |
|---|---|
| Clone() |
Tworzy dokładną kopię tego elementu Matrix. |
| CreateObjRef(Type) |
Tworzy obiekt zawierający wszystkie istotne informacje wymagane do wygenerowania serwera proxy używanego do komunikowania się z obiektem zdalnym. (Odziedziczone po MarshalByRefObject) |
| Dispose() |
Zwalnia wszystkie zasoby używane przez ten Matrixprogram . |
| Equals(Object) |
Sprawdza, czy określony obiekt jest obiektem i jest identyczny z tym Matrixelementem Matrix . |
| Finalize() |
Umożliwia obiektowi próbę zwolnienia zasobów i wykonania innych operacji oczyszczania przed odzyskaniem przez odzyskiwanie pamięci. |
| GetHashCode() |
Zwraca kod skrótu. |
| GetLifetimeService() |
Przestarzałe.
Pobiera bieżący obiekt usługi okresu istnienia, który kontroluje zasady okresu istnienia dla tego wystąpienia. (Odziedziczone po MarshalByRefObject) |
| GetType() |
Pobiera Type bieżącego wystąpienia. (Odziedziczone po Object) |
| InitializeLifetimeService() |
Przestarzałe.
Uzyskuje obiekt usługi okresu istnienia w celu kontrolowania zasad okresu istnienia dla tego wystąpienia. (Odziedziczone po MarshalByRefObject) |
| Invert() |
Odwraca ten parametr Matrix, jeśli jest on niewzględny. |
| MemberwiseClone() |
Tworzy płytkią kopię bieżącego Object. (Odziedziczone po Object) |
| MemberwiseClone(Boolean) |
Tworzy płytkią kopię bieżącego MarshalByRefObject obiektu. (Odziedziczone po MarshalByRefObject) |
| Multiply(Matrix, MatrixOrder) |
Mnoży to Matrix przez macierz określoną w parametrze |
| Multiply(Matrix) |
Mnoży to Matrix przez macierz określoną w parametrze |
| Reset() |
Resetuje to Matrix , aby mieć elementy macierzy tożsamości. |
| Rotate(Single, MatrixOrder) |
Stosuje obrotu zgodnie z ruchem wskazówek zegara określonej w parametrze |
| Rotate(Single) |
Poprzedzając ten Matrix obrót zgodnie z ruchem wskazówek zegara, wokół punktu początkowego i według określonego kąta. |
| RotateAt(Single, PointF, MatrixOrder) |
Stosuje obrót zgodnie z ruchem wskazówek zegara o określonym punkcie do tego Matrix w określonej kolejności. |
| RotateAt(Single, PointF) |
Stosuje do tego Matrix obracanie zgodnie z ruchem wskazówek zegara wokół punktu określonego w parametrze |
| Scale(Single, Single, MatrixOrder) |
Stosuje określony wektor skalowania ( |
| Scale(Single, Single) |
Stosuje określony wektor skalowania do tego Matrix , poprzedzając wektor skalowania. |
| Shear(Single, Single, MatrixOrder) |
Stosuje określony wektor ścinania do tego Matrix w określonej kolejności. |
| Shear(Single, Single) |
Stosuje określony wektor ścinania do tego Matrix , poprzedzając przekształcenie ścinania. |
| ToString() |
Zwraca ciąg reprezentujący bieżący obiekt. (Odziedziczone po Object) |
| TransformPoints(Point[]) |
Stosuje transformację geometryczną reprezentowaną przez tę Matrix wartość do określonej tablicy punktów. |
| TransformPoints(PointF[]) |
Stosuje transformację geometryczną reprezentowaną przez tę Matrix wartość do określonej tablicy punktów. |
| TransformPoints(ReadOnlySpan<Point>) |
Stosuje transformację geometryczną reprezentowaną przez tę Matrix wartość do określonej tablicy punktów. |
| TransformPoints(ReadOnlySpan<PointF>) |
Stosuje transformację geometryczną reprezentowaną przez tę Matrix wartość do określonej tablicy punktów. |
| TransformVectors(Point[]) |
Stosuje tylko składniki skalowania i obracania do Matrix określonej tablicy punktów. |
| TransformVectors(PointF[]) |
Mnoży każdy wektor w tablicy przez macierz. Elementy tłumaczenia tej macierzy (trzeci wiersz) są ignorowane. |
| TransformVectors(ReadOnlySpan<Point>) |
Mnoży każdy wektor w tablicy przez macierz. Elementy tłumaczenia tej macierzy (trzeci wiersz) są ignorowane. |
| TransformVectors(ReadOnlySpan<PointF>) |
Mnoży każdy wektor w tablicy przez macierz. Elementy tłumaczenia tej macierzy (trzeci wiersz) są ignorowane. |
| Translate(Single, Single, MatrixOrder) |
Stosuje określony wektor tłumaczenia do tego Matrix w określonej kolejności. |
| Translate(Single, Single) |
Stosuje określony wektor translacji ( |
| VectorTransformPoints(Point[]) |
Mnoży każdy wektor w tablicy przez macierz. Elementy tłumaczenia tej macierzy (trzeci wiersz) są ignorowane. |
| VectorTransformPoints(ReadOnlySpan<Point>) |
Mnoży każdy wektor w tablicy przez macierz. Elementy tłumaczenia tej macierzy (trzeci wiersz) są ignorowane. |