我正在尝试在 WPF 应用程序的初始屏幕上制作淡入淡出效果。
图像对象的 Opacity 最初为 0。此代码会将 Opacity 从 0(最小)修改为 1(最大),但 img_waves.Opacity 行不起作用。图像不透明度保持为 0。
private void Splash_ContentRendered(object sender, EventArgs e)
{
System.Threading.Thread.Sleep(3000);
for (double x = 0; x<=1; x+=0.01d)
{
System.Threading.Thread.Sleep(15);
//MessageBox.Show(x.ToString());
img_waves.Opacity = x;
}
this.Close();
}
但是,如果我激活“MessageBox.Show(x.ToString());”这一行
正如你在这张图片上看到的:
该代码有效,但我必须不断单击消息框。
我的问题是:为什么?为什么没有 MessageBox.Show 就不能工作?
最佳答案
虽然我同意@Luaan 的解释,为什么作为循环的替代解决方案,您可以在 Storyboard
属性上使用 DoubleAnimation
和 Opacity
private void Splash_ContentRendered(object sender, EventArgs e)
{
var sb = new Storyboard();
var da = new DoubleAnimation(0, 1, new Duration(TimeSpan.FromSeconds(1.5)));
da.BeginTime = TimeSpan.FromSeconds(3);
Storyboard.SetTargetProperty(da, new PropertyPath("Opacity"));
Storyboard.SetTarget(da, img_waves);
sb.Children.Add(da);
sb.Completed += (s1, e1) => this.Close();
sb.Begin();
}
关于c# - 闪屏上的淡入淡出效果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30103016/