SplashScreen s = new SplashScreen(System.Reflection.Assembly.GetExecutingAssembly(),"splash.png");
s.Show(false);
在调用s.Show()
时参数是false
还是true
,它会抛出IOException
消息
找不到资源' splash.png'
即使将splash.png添加到资源中,其构建操作也是资源。
我在WPF中使用图像时发现了许多问题,同时还有Image
控件。
答案 0 :(得分:4)
根据原则“我的代码不起作用,我不知道为什么。我的代码有效,我不知道为什么”,我已经解决了这个问题。
首先,我将启动图像的构建操作设为资源。 (将图像设置为嵌入式资源并未解决问题。)
其次,我的代码是:
SplashScreen s = new SplashScreen("resources/splash.png");
s.Show(false);
/* do some things */
s.Close(Timespan.FromMilliseconds(300));
答案 1 :(得分:1)
即使将splash.png添加到资源中,其Build Action也是Resource。
错误的构建操作,将其设为Embedded Resource
。如果仍有问题,请使用ildasm.exe查看.mresource指令的程序集清单,以确保资源正确嵌入了预期名称。
或者按照这些how-to steps使用文件。一般来说,这是一种更加理智的方法,因为当程序开始时只需要很短的时间就可以让大型资源占用程序生命周期的地址空间,这是非常有意义的。
答案 2 :(得分:0)
尝试显式指定程序集名称,即使调用者与资源位于同一程序集中。
以下是使用Pack URI语法的外观:
pack://application:,,,/MyAssemblyName;component/MyResourcesFolder/MyImage.png