<PackageReference Include="System.Drawing.Common" Version="10.0.5" />

System.Drawing.Drawing2D.Matrix

public sealed class Matrix : MarshalByRefObject, IDisposable
Encapsulates a 3-by-3 affine matrix that represents a geometric transform. This class cannot be inherited.
namespace System.Drawing.Drawing2D { public sealed class Matrix : MarshalByRefObject, IDisposable { public float[] Elements { get; } public Matrix3x2 MatrixElements { get; set; } public float OffsetX { get; } public float OffsetY { get; } public bool IsInvertible { get; } public bool IsIdentity { get; } public Matrix(); public Matrix(float m11, float m12, float m21, float m22, float dx, float dy); public Matrix(Matrix3x2 matrix); public Matrix(RectangleF rect, params PointF[] plgpts); public Matrix(Rectangle rect, params Point[] plgpts); public void Dispose(); public Matrix Clone(); public void Reset(); public void Multiply(Matrix matrix); public void Multiply(Matrix matrix, MatrixOrder order); public void Translate(float offsetX, float offsetY); public void Translate(float offsetX, float offsetY, MatrixOrder order); public void Scale(float scaleX, float scaleY); public void Scale(float scaleX, float scaleY, MatrixOrder order); public void Rotate(float angle); public void Rotate(float angle, MatrixOrder order); public void RotateAt(float angle, PointF point); public void RotateAt(float angle, PointF point, MatrixOrder order); public void Shear(float shearX, float shearY); public void Shear(float shearX, float shearY, MatrixOrder order); public void Invert(); public void TransformPoints(params PointF[] pts); public void TransformPoints(ReadOnlySpan<PointF> pts); public void TransformPoints(params Point[] pts); public void TransformPoints(ReadOnlySpan<Point> pts); public void TransformVectors(params PointF[] pts); public void TransformVectors(ReadOnlySpan<PointF> pts); public void VectorTransformPoints(params Point[] pts); public void VectorTransformPoints(ReadOnlySpan<Point> pts); public void TransformVectors(params Point[] pts); public void TransformVectors(ReadOnlySpan<Point> pts); } }