C#WPF让splashScreen图片显示的时间久点

51 篇文章 4 订阅
C#WPF让splashScreen图片显示的时间久点

为WPF添加一个主窗体启动前的图片,可以这样做:

右击项目 => 添加图片 => 右击图片 => 属性,将生成属性改成 SplashScreen

或者,打开.csproj文件,添加

<ItemGroup>
    <SplashScreen Include="图名.图片格式" />
</ItemGroup>

添加完运行时,一定要先右击项目重新生成,否则就会出现具有相同的key的错误,从而导致主窗体上引用的图片,一些样式失效。

运行成功后,主窗体启动前将显示这个图片。但是问题是该图片一闪而过。

网上流传的版本是把图片做成嵌入的资源,然后声明一个splashScreen对象,之后Show,考虑Close(new TimeSpan())什么的。事实上,这个方案完全不可行。

Close(new TimeSpan(0,0,10))这种方法并不会按照想象的那样等10s关闭。事实上,这个方法也不是那个意思。反之效果仍然是一闪而过。解决问题的关键是让主线程休眠一段时间。原因是,SplashScreen或者说这个要先显示的图片的显示时间是主线程(主窗体)完全起来前的那段时间。这段时间的长短不取决于这个图片何时关闭。也就是说,并不是设定了这个图片何时关闭,主窗体就在它关闭后才出现的。相反,让主窗体晚显示t段时间,那张图片就多显示t段时间。而让主窗体晚显示的方法就是让主线程休眠。所以,可以在App类中如此控制:

/// <summary>
/// App.xaml 的交互逻辑
/// </summary>
public partial class App : Application
{
    App()
    {
        //让线程休眠2s
        System.Threading.Thread.Sleep(2000);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值