此问题在此处已有答案:
WPF - Import image as resource(3个答案)
Storing WPF Image Resources(11个答案)
13天前关门了。
我在VS C# .NET6 WPF项目的Resource目录中有一个有效的多大小.ico图像文件。这个资源文件被标记为Embedded resource
,将包含在二进制文件中。
我尝试用
Uri iconUri = new Uri("pack://application:,,,/Resources/iconfile.ico");
this.Icon = BitmapFrame.Create(iconUri);
字符串
项目中没有编译错误。第二行给出了VS 2022调试器中的运行时错误:System.IO.IOException: Cannot locate resource 'resources/iconfile.ico'.
个
请帮助我理解为什么这个资源组件对代码不可见。
ChatGPT和论坛档案没有对此做出任何解释。
P.S.它似乎没有抱怨邻居.png文件(也标记为嵌入式资源),我在XAML文件中直接引用它,使用类似的URI作为<Image>
的Source
。最初,我在XAML中也引用了.ico文件,将其分配为<Window>
中的Icon
,但我在InitialiseComponent();
中遇到了相同的运行时错误,因此我决定在.cs
中显式引用它,并获得了相同的效果。
我还注意到,我的.ico文件是基于PNG的256x256大小和BMP的所有其他大小的基础上...这和这件事有关系吗?
2条答案
按热度按时间9rbhqvlz1#
简而言之,你需要用“Resource”构建动作来标记你的文件,* 而不是 *“Embedded resource”。
嵌入式资源用于 manifest resources,您可以使用
Assembly.GetManifestResourceStream()
等方法加载。这是另一回事对于WPF从packURI加载资源,需要使用Resourcebuild操作来构建它。
clj7thdc2#
多尺寸的图标文件需要16x16,32x32,48x48和256x256像素,并需要在整个图像的外边缘周围至少有一个空白像素。检查以确保您的图标没有接触网格的外边缘之一,并且所有大小都使用相同的格式(PNG,BMP等)。
考虑通过在线ICO转换器运行您的源图像,以验证并确保图标正确。
https://convertio.co/png-ico/