【发布时间】:2018-11-12 19:45:35
【问题描述】:
所以情况就是这样。我目前正在开发一个 C# WPF 桌面应用程序,我想在启动程序时添加一个启动画面。
但我没有使用 SplashScreen 类。我在同名应用程序之上使用了一个额外的 WPF Windows 类,我将该类称为 Splashy。
我的初始屏幕有一个动画 GIF 图像,当在下面 Splashy 类的 WebBrowser 控件上进行动画处理时效果很好......
<Image gif:ImageBehavior.AnimatedSource="Images/FSIntro.gif" Margin="10,1,0,10">
<Image.OpacityMask>
<ImageBrush ImageSource="Images/FSIntro.gif"/>
</Image.OpacityMask>
</Image>
...Splashy 类本身在 App.XAML 中被初始化为 StartupUri。
<Application
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
... ...
... (some text) ...
... ...
StartupUri="Splashy.xaml">
<Application.Resources>
但这种情况的问题是启动画面只是挂起,并且没有进入主程序本身。
所以我尝试了不同的方法。一个使用代码。
当我将以下代码实现到启动画面,然后将其实现到我的程序以运行启动画面然后显示主屏幕时,启动画面执行我想做的操作但它没有动画 如我所愿。
下面是Splashy类代码
public partial class Splashy : Window
{
public Intro()
{
InitializeComponent();
}
public void Outro()
{
this.Close();
}
}
下面是实现splashScreen的程序方法。
public partial class LoginScreen : Window
{
Splashy splash = new Splashy();
public LoginScreen()
{
splash.Show();
Thread.Sleep(5000);
splash.Outro();
// home screen
}
}
任何指点和帮助将不胜感激。
【问题讨论】:
-
很可能是因为您正在休眠 UI 线程?
-
程序员通常使用闪屏来掩盖他们的 UI 线程没有响应的事实。忙于初始化自身。 “不响应”包括不获取 GIF 动画。不是您应该考虑修复的问题,因为这很难正确执行,并且您可能不再需要启动屏幕了:) 保持简单。
-
@Ross Chris 有空请标记为正确。
标签: c# wpf splash-screen