我的 ImplicitAnimation 有问题。当网格上升时,一切看起来都很好,但是当 CloseButton_Click 方法运行并且网格下降时,像Artefacts图像中的那些人工制品。有谁知道如何修理它?我会感激每一个想法。
我的代码如下所示:
public sealed partial class AddTaskView : UserControl
{
private Compositor _compositor;
private Visual myWindow;
private Vector3KeyFrameAnimation offsetAnimation;
private ImplicitAnimationCollection implicitAnimation;
public AddTaskView()
{
this.InitializeComponent();
this.InitializeTransition();
}
private void InitializeTransition()
{
WindowGrid.Height = ((Frame)Window.Current.Content).ActualHeight;
WindowGrid.Width = ((Frame)Window.Current.Content).ActualWidth;
myWindow = ElementCompositionPreview.GetElementVisual(myWindowGrid);
_compositor = myWindow.Compositor;
myWindow.Size = new Vector2((float)((Frame)Window.Current.Content).ActualWidth
, (float)((Frame)Window.Current.Content).ActualHeight);
}
private void ColorSlideTransitionCompleted(object sender, EventArgs e)
{
}
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
myWindow.Size = new Vector2((float)((Frame)Window.Current.Content).ActualWidth
, (float)((Frame)Window.Current.Content).ActualHeight);
myWindow.Offset = new Vector3(0.0f, (float)WindowGrid.ActualHeight, 0.0f);
offsetAnimation = _compositor.CreateVector3KeyFrameAnimation();
offsetAnimation.Target = nameof(Visual.Offset);
offsetAnimation.InsertExpressionKeyFrame(1.0f, "this.FinalValue");
offsetAnimation.Duration = TimeSpan.FromMilliseconds(5000);
implicitAnimation = _compositor.CreateImplicitAnimationCollection();
implicitAnimation[nameof(Visual.Offset)] = offsetAnimation;
myWindow.ImplicitAnimations = implicitAnimation;
#region slide
myWindow.Offset = new Vector3(0.0f, 0.0f, 0.0f);
#endregion
}
private void CloseButton_Click(object sender, RoutedEventArgs e)
{
myWindow.Offset = new Vector3(0.0f, (float)((Frame)Window.Current.Content).ActualHeight, 0.0f);
}
}
OffTopic:稍后,我想将此动画与 GaussianBlurEffect 连接起来。有可能做到吗?你对我有什么建议吗?我也会感激不尽。