/// <summary> /// Pushes the given matrix onto the transform stack. /// </summary> /// <param name="matrix">The matrix to push.</param> /// <remarks> /// This method also applies the matrix to the graphics context and the current local clip. /// The new local clip is then pushed onto the local clip stack. /// </remarks> public virtual void PushMatrix(PMatrix matrix) { if (matrix == null) return; RectangleF newLocalClip = matrix.InverseTransform(LocalClip); transformStack.Push(graphics.Transform); localClipStack.Push(newLocalClip); graphics.MultiplyTransform(matrix.MatrixReference); }
/// <summary> /// Pushes the given matrix onto the matrix stack. /// </summary> /// <param name="aMatrix">The matrix to push.</param> public virtual void PushMatrix(PMatrix aMatrix) { matrixStack.Push(new PTuple(PickedNode, aMatrix)); if (aMatrix != null) { RectangleF newPickBounds = aMatrix.InverseTransform(PickBounds); pickBoundsStack.Push(newPickBounds); } }
/// <summary> /// Overridden. See <see cref="PPaintContext.PushMatrix">PPaintContext.PushTransform</see>. /// </summary> public override void PushMatrix(PMatrix matrix) { if (matrix == null) return; RectangleF newLocalClip = matrix.InverseTransform(LocalClip); localClipStack.Push(newLocalClip); PMatrix newMatrix = (PMatrix)Transform.Clone(); newMatrix.Multiply(matrix); transformStack.Push(newMatrix); SetWorldMatrix(newMatrix); }