我正在使用Xamarin Studio和GTK#(.NET)。我有以下问题: 我做了一个应用程序,我需要(dinamically)下载Web图像(favicon)并将它们显示在Gtk.Image小部件中。当我尝试这样做时,我收到以下错误:
System.ArgumentException: 'myfile.ico' is not a valid resource name of assembly 'myApp, Version=1.0.6742.24722, Culture=neutral, PublicKeyToken=null'.
at at Gdk.PixbufLoader.InitFromAssemblyResource(Assembly assembly, String resource)
at at Gdk.PixbufLoader..ctor(Assembly assembly, String resource)
at at Gdk.Pixbuf..ctor(Assembly assembly, String resource)
at at Gdk.Pixbuf.LoadFromResource(String resource)
如果我在资源文件夹中添加了favicon,在下载之后,它会起作用,但是我需要做一个dinamically(如果我添加一个新网站,我想在那里看到它的图标..)。 代码:
using (WebClient client = new WebClient())
{
client.DownloadFile(new Uri("https://google.com/favicon.ico",
Directory.GetCurrentDirectory() + "\..\..\Res\google.ico");
}
faviconImage.Pixbuf = Gdk.Pixbuf.LoadFromResource("myApp.Res.myfile.ico");
图像在文件夹中(我可以看到它,一切正常)但如果我不在资源文件夹中包含它(手动),我就无法使用它。
请帮帮我:'(
答案 0 :(得分:0)
Pixbuf.LoadFromResource
仅从嵌入式程序集资源加载图像数据。创建后,无法向程序集添加资源。
要从文件创建Pixbuf
,请使用支持文件路径的.ator
或使用文件流的文件。
类似的东西:
var filePath = Path.Combine(Directory.GetCurrentDirectory(), "myDownloadIcon.ico");
var newPixBuf = new PixBuf(filePath):
faviconImage.Pixbuf = newPixBuf;