矩阵函数

Windows GDI+ 公开一个由大约 600 个函数组成的平面 API,这些函数在 Gdiplus.dll 中实现并在 Gdiplusflat.h 中声明。 GDI+ 平面 API 中的函数由大约 40 个 C++ 类的集合包装。 建议不要直接调用平面 API 中的函数。 每当调用 GDI+ 时,都应该通过调用 C++ 包装器提供的方法和函数来执行此操作。 Microsoft 产品支持服务不会为直接调用平面 API 的代码提供支持。 有关使用这些包装器方法的详细信息,请参阅 GDI+ 平面 API

以下平面 API 函数由 Matrix C++ 类包装。

矩阵函数和相应的包装器方法

平面函数 包装器方法 说明
GpStatus WINGDIPAPI GdipCreateMatrix (GpMatrix **matrix)
Matrix::Matrix
创建并初始化表示标识矩阵的 Matrix::Matrix 对象。
GpStatus WINGDIPAPI GdipCreateMatrix2 (REAL m11, REAL m12, REAL m21, REAL m22, REAL dx, REAL dy, GpMatrix **matrix)
Matrix::Matrix 基于定义仿射转换的六个数字创建并初始化 Matrix::Matrix 对象。
GpStatus WINGDIPAPI GdipCreateMatrix3 (GDIPCONST GpRectF *rect, GDIPCONST GpPointF *dstplg, GpMatrix **matrix)
Matrix::Matrix 基于矩形和点创建 Matrix::Matrix 对象。
GpStatus WINGDIPAPI GdipCreateMatrix3I (GDIPCONST GpRect *rect, GDIPCONST GpPoint *dstplg, GpMatrix **matrix)
Matrix::Matrix 基于矩形和点创建 Matrix::Matrix 对象。
GpStatus WINGDIPAPI GdipCloneMatrix (GpMatrix *matrix, GpMatrix **cloneMatrix)
Matrix::Clone
Matrix::Clone 方法创建一个新的 Matrix 对象,该对象是此 Matrix 对象的副本。
GpStatus WINGDIPAPI GdipDeleteMatrix (GpMatrix *matrix)
~Matrix ()
清理 Matrix::Matrix 对象使用的资源。
GpStatus WINGDIPAPI GdipSetMatrixElements (GpMatrix *matrix, REAL m11, REAL m12, REAL m21, REAL m22, REAL dx, REAL dy)
Matrix::SetElements
Matrix::SetElements 方法设置此矩阵的元素。
GpStatus WINGDIPAPI GdipMultiplyMatrix (GpMatrix *matrix, GpMatrix* matrix2, GpMatrixOrder order)
Matrix::Multiply
Matrix::Multiply 方法使用自身和另一个矩阵的乘积更新此矩阵。
GpStatus WINGDIPAPI GdipTranslateMatrix (GpMatrix *matrix, REAL offsetX, REAL offsetY, GpMatrixOrder order)
Matrix::Translate
Matrix::Translate 方法使用自身乘积和转换矩阵更新此矩阵。
GpStatus WINGDIPAPI GdipScaleMatrix (GpMatrix *matrix, REAL scaleX, REAL scaleY, GpMatrixOrder order)
Matrix::Scale
Matrix::Scale 方法使用自身和缩放矩阵的乘积更新此矩阵。
GpStatus WINGDIPAPI GdipRotateMatrix (GpMatrix *matrix, REAL angle, GpMatrixOrder order)
Matrix::Rotate
Matrix::Rotate 方法使用自身乘积和旋转矩阵更新此矩阵。
GpStatus WINGDIPAPI GdipShearMatrix (GpMatrix *matrix, REAL shearX, REAL shearY, GpMatrixOrder order)
Matrix::Shear
Matrix::Shear 方法使用自身乘积和剪切矩阵更新此矩阵。
GpStatus WINGDIPAPI GdipInvertMatrix (GpMatrix *matrix)
Matrix::Invert
如果此矩阵是可逆的, 则 Matrix::Invert 方法会将此矩阵的元素替换为其逆矩阵的元素。
GpStatus WINGDIPAPI GdipTransformMatrixPoints (GpMatrix *matrix,GpPointF *pts,INT count)
Matrix::TransformPoints
Matrix::TransformPoints 方法将数组中的每个点乘以此矩阵。 每个点都被视为一个行矩阵。 乘法执行时,行矩阵在左侧,此矩阵在右侧。
GpStatus WINGDIPAPI GdipTransformMatrixPointsI (GpMatrix *matrix,GpPoint *pts,INT count)
Matrix::TransformPoints
Matrix::TransformPoints 方法将数组中的每个点乘以此矩阵。 每个点都被视为一个行矩阵。 乘法执行时,行矩阵在左侧,此矩阵在右侧。
GpStatus WINGDIPAPI GdipVectorTransformMatrixPoints (GpMatrix *matrix,GpPointF *pts,INT count)
Matrix::TransformVectors
Matrix::TransformVectors 方法将数组中的每个向量乘以此矩阵。 该矩阵的转换元素(第三行)被忽略。 每个向量都被视为一个行矩阵。 乘法执行时,行矩阵在左侧,此矩阵在右侧。
GpStatus WINGDIPAPI GdipVectorTransformMatrixPointsI (GpMatrix *matrix,GpPoint *pts,INT count)
Matrix::TransformVectors
Matrix::TransformVectors 方法将数组中的每个向量乘以此矩阵。 该矩阵的转换元素(第三行)被忽略。 每个向量都被视为一个行矩阵。 乘法执行时,行矩阵在左侧,此矩阵在右侧。
GpStatus WINGDIPAPI GdipGetMatrixElements (GDIPCONST GpMatrix *matrix, REAL *matrixOut)
Matrix::GetElements
Matrix::GetElements 方法获取此矩阵的元素。 元素按 m11、m12、m21、m22、m31、m32 的顺序放置在数组中,其中 mij 表示第 i 列 j 中的元素。
GpStatus WINGDIPAPI GdipIsMatrixInvertible (GDIPCONST GpMatrix *matrix, BOOL *result)
Matrix::IsInvertible
Matrix::IsInvertible 方法确定此矩阵是否不可逆。
GpStatus WINGDIPAPI GdipIsMatrixIdentity (GDIPCONST GpMatrix *matrix, BOOL *result)
Matrix::IsIdentity
Matrix::IsIdentity 方法确定此矩阵是否为标识矩阵。
GpStatus WINGDIPAPI GdipIsMatrixEqual (GDIPCONST GpMatrix *matrix, GDIPCONST GpMatrix *matrix2, BOOL *result)
Matrix::Equals
Matrix::Equals 方法确定此矩阵的元素是否等于另一个矩阵的元素。