| File: System\Windows\Media\MatrixTransform.cs | Web Access |
| Project: src\wpf\src\Microsoft.DotNet.Wpf\src\PresentationCore\PresentationCore.csproj (PresentationCore) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // using MS.Internal; namespace System.Windows.Media { ///<summary> /// Create an arbitrary matrix transformation. ///</summary> public sealed partial class MatrixTransform : Transform { #region Constructors ///<summary> /// ///</summary> public MatrixTransform() { } ///<summary> /// Create an arbitrary matrix transformation. ///</summary> ///<param name="m11">Matrix value at position 1,1</param> ///<param name="m12">Matrix value at position 1,2</param> ///<param name="m21">Matrix value at position 2,1</param> ///<param name="m22">Matrix value at position 2,2</param> ///<param name="offsetX">Matrix value at position 3,1</param> ///<param name="offsetY">Matrix value at position 3,2</param> public MatrixTransform( double m11, double m12, double m21, double m22, double offsetX, double offsetY ) { Matrix = new Matrix(m11, m12, m21, m22, offsetX, offsetY); } ///<summary> /// Create a matrix transformation from constant transform. ///</summary> ///<param name="matrix">The constant matrix transformation.</param> public MatrixTransform(Matrix matrix) { Matrix = matrix; } #endregion ///<summary> /// Return the current transformation value. ///</summary> public override Matrix Value { get { ReadPreamble(); return Matrix; } } #region Internal Methods ///<summary> /// Returns true if transformation matches the identity transform. ///</summary> internal override bool IsIdentity { get { return Matrix.IsIdentity && CanFreeze; } } internal override bool CanSerializeToString() { return CanFreeze; } /// <summary> /// Creates a string representation of this object based on the format string /// and IFormatProvider passed in. /// If the provider is null, the CurrentCulture is used. /// See the documentation for IFormattable for more information. /// </summary> /// <returns> /// A string representation of this object. /// </returns> internal override string ConvertToString(string format, IFormatProvider provider) { if (!CanSerializeToString()) { return base.ConvertToString(format, provider); } return ((IFormattable)Matrix).ToString(format, provider); } internal override void TransformRect(ref Rect rect) { Matrix matrix = Matrix; MatrixUtil.TransformRect(ref rect, ref matrix); } internal override void MultiplyValueByMatrix(ref Matrix result, ref Matrix matrixToMultiplyBy) { result = Matrix; MatrixUtil.MultiplyMatrix(ref result, ref matrixToMultiplyBy); } #endregion Internal Methods } }