Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用外部图像的WPF SplashScreen_C#_Wpf_Splash Screen - Fatal编程技术网

C# 使用外部图像的WPF SplashScreen

C# 使用外部图像的WPF SplashScreen,c#,wpf,splash-screen,C#,Wpf,Splash Screen,我需要使我的SplashScreen显示硬盘上的图像(因为我将使用多个图像,这些图像可能会在项目之外更改)。但是WPF SplashScreen只接受存在于这个或另一个程序集中的资源文件 那么,我该怎么解决呢?也许,有什么方法可以在运行时创建临时资源文件?我不认为这可以按照您的意愿完成,但是,可以创建一个单独的程序集,您可以随时更改该程序集,该程序集将包含资源,使用: 我不认为这可以按照您的意愿完成,但是,可以创建一个单独的程序集,您可以随时更改该程序集,该程序集将包含资源,使用: 实现此目标的

我需要使我的SplashScreen显示硬盘上的图像(因为我将使用多个图像,这些图像可能会在项目之外更改)。但是WPF SplashScreen只接受存在于这个或另一个程序集中的资源文件


那么,我该怎么解决呢?也许,有什么方法可以在运行时创建临时资源文件?

我不认为这可以按照您的意愿完成,但是,可以创建一个单独的程序集,您可以随时更改该程序集,该程序集将包含资源,使用:


我不认为这可以按照您的意愿完成,但是,可以创建一个单独的程序集,您可以随时更改该程序集,该程序集将包含资源,使用:


实现此目标的最佳方法是根本不使用启动屏幕功能

创建一个新的XAML窗口,并将其大小调整为您希望启动屏幕的大小。然后,您可以使用引用您想要的图像。这也可以在加载时从代码隐藏中完成

准备好后,让主窗口第一件事就是启动启动屏幕。让它加载您需要的所有内容,然后显示主窗口并关闭启动屏幕窗口

这样,您就可以完全控制“启动屏幕”,因为它只是您正在加载的另一个窗口


这样做的一个缺点是它可能有一个非常小的(.5秒左右)延迟,因为WPF必须在窗口显示之前加载。实际的splashscreen不是WPF,因此它将立即显示。这对我来说从来都不是问题。

实现这一目标的最佳方法是根本不使用闪屏功能

创建一个新的XAML窗口,并将其大小调整为您希望启动屏幕的大小。然后,您可以使用引用您想要的图像。这也可以在加载时从代码隐藏中完成

准备好后,让主窗口第一件事就是启动启动屏幕。让它加载您需要的所有内容,然后显示主窗口并关闭启动屏幕窗口

这样,您就可以完全控制“启动屏幕”,因为它只是您正在加载的另一个窗口


这样做的一个缺点是它可能有一个非常小的(.5秒左右)延迟,因为WPF必须在窗口显示之前加载。实际的splashscreen不是WPF,因此它将立即显示。这对我来说从来都不是问题。

有没有办法在VS之外更改组件?是的。程序集被编译为.dll文件。只要将.dll替换为另一个具有相同名称和相同资源字符串名称的有效.dll,只要复制并替换该文件,它就会更改映像。是否有任何方法可以在VS之外更改程序集?是的。程序集被编译为.dll文件。只要将.dll替换为另一个具有相同名称和相同资源字符串名称的有效.dll,只需复制并替换该文件,它就会更改图像。