描述
用自身和另一个矩阵的乘积更新画笔的变换矩阵.
C++ Syntax
Status MultiplyTransform( [in] const Matrix *matrix, [in] MatrixOrder order ); |
FreeBASIC 语法
FUNCTION MultiplyTransform ( _ BYVAL pMatrix AS CGpMatrix PTR, _ BYVAL order AS MatrixOrder = MatrixOrderPrepend _ ) AS GpStatus |
参数
pMatrix
[in]指向矩阵乘以刷的电流变换矩阵.
order
该MatrixOrder指定相乘的顺序[in, optional]元.MatrixOrderPrepend指定传递矩阵是在左边,和MatrixOrderAppend指定传递矩阵是正确的.默认值是MatrixOrderPrepend.
返回值
如果该方法成功,则返回Ok,这是对Status枚举元素.
如果这个方法失败,它返回一个枚举的其他元素的Status.
备注
一个3?矩阵可以存储任意序列的仿射变换.如果你有几个3?矩阵,其中每一个表示仿射变换,这些矩阵的产品是一个单一的3?表示整个变换序列的矩阵.该产品表示的变换称为复合变换.例如,假设矩阵R代表一个旋转矩阵T代表翻译.如果矩阵M是产品RT,然后矩阵M代表复合变换:先旋转,然后翻译.
矩阵乘法的顺序是重要的.在一般情况下,矩阵的乘积RT不是矩阵的乘积TR相同.在上一段中给出的例子中,由RT复合变换(旋转,然后翻译)不为代表的TR复合变换相同(第一次翻译,然后旋转).
引用文件
CGpBrush.inc (include CGdiPlus.inc)
示例
' ========================================================================================
' The following example creates a PathGradientBrush object based on a triangular path. The
' code calls the PathGradientBrush.ScaleTransform method of the PathGradientBrush object
' to fill the brush's transformation matrix with the elements that represent a horizontal
' scaling by a factor of 3. Then the code calls the PathGradientBrush.MultiplyTransform
' method of that same PathGradientBrush object to multiply the brush's existing transformation
' matrix by a matrix that represents a translation (10 right, 30 down). The MatrixOrderAppend
' argument indicates that the multiplication is performed with the translation matrix on the right.
' After the multiplication, the brush's transformation matrix represents a composite
' transformation: first scale, then translate. That composite transformation is applied to
' the brush's boundary path during the call to FillRectangle, so it is the area inside the
' transformed path that gets painted.
' ========================================================================================
SUB Example_MultiplyTransform (BYVAL hdc AS HDC)
' // Create a graphics object from the window device context
DIM graphics AS CGpGraphics = hdc
' // Get the DPI scaling ratio
DIM rxRatio AS SINGLE = graphics.GetDpiX / 96
DIM ryRatio AS SINGLE = graphics.GetDpiY / 96
' // Set the scale transform
graphics.ScaleTransform(rxRatio, ryRatio)
DIM points(0 TO 2) AS GpPoint = {GDIP_POINT(0, 0), GDIP_POINT(50, 0), GDIP_POINT(50, 50)}
' // Translate 10 right, 30 down.
DIM Matrix AS CGpMatrix = CGpMatrix(1.0, 0.0, 0.0, 1.0, 10.0, 30.0)
DIM pthGrBrush AS CGpPathGradientBrush = CGpPathGradientBrush(@points(0), 3)
pthGrBrush.ScaleTransform(3.0, 1.0)
pthGrBrush.MultiplyTransform(@matrix, MatrixOrderAppend)
graphics.FillRectangle(@pthGrBrush, 0, 0, 200, 200)
END SUB
' ========================================================================================