我使用此代码降低窗口的不透明度,当用户移动它并在拖动移动完成后,我的窗口不透明度为其原始值。
{{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;
}
}
}