58 lines
1.8 KiB
C#
58 lines
1.8 KiB
C#
using Avalonia;
|
|
using Avalonia.Animation;
|
|
using Avalonia.Media;
|
|
using Avalonia.Styling;
|
|
using System;
|
|
|
|
namespace Harmonia.UI.Animations
|
|
{
|
|
public static class Animations
|
|
{
|
|
public static Animation SlideIn(Point start, Point end, long duration = 200)
|
|
{
|
|
return new()
|
|
{
|
|
Duration = TimeSpan.FromMilliseconds(duration),
|
|
Children =
|
|
{
|
|
new KeyFrame
|
|
{
|
|
Cue = new Cue(0f),
|
|
Setters =
|
|
{
|
|
new Setter(Visual.OpacityProperty, 0.0),
|
|
new Setter(TranslateTransform.XProperty, start.X),
|
|
new Setter(TranslateTransform.YProperty, start.Y)
|
|
}
|
|
},
|
|
new KeyFrame
|
|
{
|
|
Cue = new Cue(1f),
|
|
Setters =
|
|
{
|
|
new Setter(Visual.OpacityProperty, 1.0),
|
|
new Setter(TranslateTransform.XProperty, end.X),
|
|
new Setter(TranslateTransform.YProperty, end.Y)
|
|
}
|
|
}
|
|
}
|
|
};
|
|
}
|
|
|
|
public static Animation SlideFromRight(double offSet, long duration = 200)
|
|
{
|
|
Point start = new(-offSet, 0);
|
|
Point end = new(0, 0);
|
|
|
|
return SlideIn(start, end, duration);
|
|
}
|
|
|
|
public static Animation SlideToRight(double offSet, long duration = 200)
|
|
{
|
|
Point start = new(0, 0);
|
|
Point end = new(offSet, 0);
|
|
|
|
return SlideIn(start, end, duration);
|
|
}
|
|
}
|
|
} |