Wpf动画不透明度和拖动移动窗口同时使窗口断断续续

时间:2017-04-23 11:21:39

标签: wpf

我使用此代码降低窗口的不透明度,当用户移动它并在拖动移动完成后,我的窗口不透明度为其原始值。

{{1}}

问题是当用户开始移动窗口并且时间窗口的不透明度降低时,窗口会移动口吃。当动画完成窗口开始移动而没有口吃。

我有什么办法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

我处理了MouseMove而不是MouseDown。其次,你在拖动时使用两种动画,因此这种口吃。下面的代码对我来说非常好。

<Window ...>    
    <Grid Background="Yellow" MouseMove="Grid_MouseMove_1"/>    
</Window>

代码:

private bool animation_is_running = false;
private void Grid_MouseMove_1(object sender, MouseEventArgs e)
    {
        if (Mouse.LeftButton == MouseButtonState.Pressed)
        {
            if (!animation_is_running)
            {
                var decreaseOpacityAnim = new DoubleAnimation(0.5, (Duration)TimeSpan.FromSeconds(1));
                this.BeginAnimation(UIElement.OpacityProperty, decreaseOpacityAnim);
                animation_is_running = true;
            }

            this.DragMove();
        }
        else
        {
            if (animation_is_running)
            {
                var increaseOpacityAnim = new DoubleAnimation(1, (Duration)TimeSpan.FromSeconds(1));
                this.BeginAnimation(UIElement.OpacityProperty, increaseOpacityAnim);
                animation_is_running = false;
            }
        }
    }