committed by
GitHub
3 changed files with 174 additions and 3 deletions
@ -0,0 +1,69 @@ |
|||||
|
// Copyright (c) The Avalonia Project. All rights reserved.
|
||||
|
// Licensed under the MIT license. See licence.md file in the project root for full license information.
|
||||
|
|
||||
|
using System; |
||||
|
using Avalonia.VisualTree; |
||||
|
|
||||
|
namespace Avalonia.Media |
||||
|
{ |
||||
|
/// <summary>
|
||||
|
/// Skews an <see cref="IVisual"/>.
|
||||
|
/// </summary>
|
||||
|
public class SkewTransform : Transform |
||||
|
{ |
||||
|
/// <summary>
|
||||
|
/// Defines the <see cref="AngleX"/> property.
|
||||
|
/// </summary>
|
||||
|
public static readonly StyledProperty<double> AngleXProperty = |
||||
|
AvaloniaProperty.Register<SkewTransform, double>(nameof(AngleX)); |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// Defines the <see cref="AngleY"/> property.
|
||||
|
/// </summary>
|
||||
|
public static readonly StyledProperty<double> AngleYProperty = |
||||
|
AvaloniaProperty.Register<SkewTransform, double>(nameof(AngleY)); |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// Initializes a new instance of the <see cref="SkewTransform"/> class.
|
||||
|
/// </summary>
|
||||
|
public SkewTransform() |
||||
|
{ |
||||
|
this.GetObservable(AngleXProperty).Subscribe(_ => RaiseChanged()); |
||||
|
this.GetObservable(AngleYProperty).Subscribe(_ => RaiseChanged()); |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// Initializes a new instance of the <see cref="SkewTransform"/> class.
|
||||
|
/// </summary>
|
||||
|
/// <param name="angleX">The skew angle of X-axis, in degrees.</param>
|
||||
|
/// <param name="angleY">The skew angle of Y-axis, in degrees.</param>
|
||||
|
public SkewTransform(double angleX, double angleY) : this() |
||||
|
{ |
||||
|
AngleX = angleX; |
||||
|
AngleY = angleY; |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// Gets or sets the AngleX property.
|
||||
|
/// </summary>
|
||||
|
public double AngleX |
||||
|
{ |
||||
|
get { return GetValue(AngleXProperty); } |
||||
|
set { SetValue(AngleXProperty, value); } |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// Gets or sets the AngleY property.
|
||||
|
/// </summary>
|
||||
|
public double AngleY |
||||
|
{ |
||||
|
get { return GetValue(AngleYProperty); } |
||||
|
set { SetValue(AngleYProperty, value); } |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// Gets the tranform's <see cref="Matrix"/>.
|
||||
|
/// </summary>
|
||||
|
public override Matrix Value => Matrix.CreateSkew(Matrix.ToRadians(AngleX), Matrix.ToRadians(AngleY)); |
||||
|
} |
||||
|
} |
||||
Loading…
Reference in new issue