我没有用嵌入的资源
在外面新建了个dll工程XXRes
然后选择添加了一个资源文件XXResources.resx
向里面添加了几张图片p1,p2...我在另一个工程里引用了这个资源文件using XXRes
在使用的时候pictureBox1 = global::XXRes.XXResources.p1这样没有问题,图片正常显示但是我每次得到的图片名称是一个名字,string
如何通过这个图片的名字获得该资源?在网上找了一些方法,都不好用啊。

解决方案 »

  1.   

    一个小例子,供参考
            private void button1_Click(object sender, EventArgs e)
            {
                Image img = Image.FromFile(@"C:\ca.JPG");
                this.pictureBox1.Image = img;
                using (Graphics g = Graphics.FromImage(img))
                {
                    using (System.IO.MemoryStream mstream = new System.IO.MemoryStream())
                    {
                        img.Save(mstream, System.Drawing.Imaging.ImageFormat.Png);
                        IntPtr intP = new Bitmap(mstream).GetHicon();
                        this.Icon = Icon.FromHandle(intP);
                        DestroyIcon(intP);//API 
                    }
                }
            }
      

  2.   


    我的图片封装到资源文件并打包成dll了啊
    不能用FormFile吧
      

  3.   

               System.Reflection.Assembly asm=System.Reflection.Assembly.GetEntryAssembly();
                string[] name = asm.GetManifestResourceNames();
                if (name != null && name.Length > 0)
                {
                    //str1就是资源文件图片的名字   WindowsApplication1.1.jpg
                    string str1 = name[2];
                    this.BackgroundImage = Image.FromStream(asm.GetManifestResourceStream(str1));
                }
      

  4.   

    这个string[] name 里面是各个资源图片的名字吗?
    最主要的是我不知道这是在读哪个资源文件啊?
    我的资源文件是单独打包成dll的,是项目之外的一个项目,不是嵌入的资源文件。
      

  5.   

    Assembly asm = Assembly.LoadFrom("资源dll文件路径");
                ResourceManager rm = new ResourceManager("资源文件名", asm);
                pictureBox1.BackgroundImage= Image.FromStream(rm.GetStream("图片名"));
      

  6.   

    使用System.Resources.ResXResourceWriter
    System.Resources.ResXResourceReader可以自己制作 resx 资源文件,在程序中加载使用.
      

  7.   


    这种方法就可以了。
    一般资源文件的名称是“命名空间”.“图片名字”WindowsApplication1.1.jpg
    这个名称中WindowsApplication1是命名空间,1.jpg是图片的名字
      

  8.   

    这样貌似不能引用.resx的资源文件
    查了msdn
    我先用Resgen.exe把.resx转成.resources文件
    然后再用Al.exe把.resources打包成dll
    再用这种方法就OK了。
      

  9.   

    其实也不OK
    要把rm.GetStream改成rm.GetObject