gpt4 book ai didi

c# - 在代码隐藏的 WPF 中创建闪烁动画

转载 作者:太空狗 更新时间:2023-10-30 00:31:43 26 4
gpt4 key购买 nike

我想将 Blink 动画应用于 Canvas,以便我在其上绘制的所有对象都会随之闪烁。

我使用下面的代码取得了一些成功,该代码相当快地更改了 CanvasOpacity 属性以实现此效果,但我对它有点不满意。

我更喜欢在我当前的代码中没有任何 FadeOut/FadeIn 的纯眨眼。我怎样才能以正确的方式做到这一点?

var blinkAnimation = new DoubleAnimation
{
From = 1,
To = 0
};

var blinkStoryboard = new Storyboard
{
Duration = TimeSpan.FromMilliseconds(500),
RepeatBehavior = RepeatBehavior.Forever,
AutoReverse = true
};

Storyboard.SetTarget(blinkAnimation, MyCanvas);
Storyboard.SetTargetProperty(blinkAnimation, new PropertyPath(OpacityProperty));

blinkStoryboard.Children.Add(blinkAnimation);
MyCanvas.BeginStoryboard(blinkStoryboard);

也许我可以使用 VisibilityProperty 来做到这一点,但我无法做到这一点。

最佳答案

您可以使用具有适当 BeginTime 的第二个动画:

var switchOffAnimation = new DoubleAnimation
{
To = 0,
Duration = TimeSpan.Zero
};

var switchOnAnimation = new DoubleAnimation
{
To = 1,
Duration = TimeSpan.Zero,
BeginTime = TimeSpan.FromSeconds(0.5)
};

var blinkStoryboard = new Storyboard
{
Duration = TimeSpan.FromSeconds(1),
RepeatBehavior = RepeatBehavior.Forever
};

Storyboard.SetTarget(switchOffAnimation, MyCanvas);
Storyboard.SetTargetProperty(switchOffAnimation, new PropertyPath(Canvas.OpacityProperty));
blinkStoryboard.Children.Add(switchOffAnimation);

Storyboard.SetTarget(switchOnAnimation, MyCanvas);
Storyboard.SetTargetProperty(switchOnAnimation, new PropertyPath(Canvas.OpacityProperty));
blinkStoryboard.Children.Add(switchOnAnimation);

MyCanvas.BeginStoryboard(blinkStoryboard);

关于c# - 在代码隐藏的 WPF 中创建闪烁动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23591106/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com