我没有用嵌入的资源
在外面新建了个dll工程XXRes
然后选择添加了一个资源文件XXResources.resx
向里面添加了几张图片p1,p2...我在另一个工程里引用了这个资源文件using XXRes
在使用的时候pictureBox1 = global::XXRes.XXResources.p1这样没有问题,图片正常显示但是我每次得到的图片名称是一个名字,string
如何通过这个图片的名字获得该资源?在网上找了一些方法,都不好用啊。
在外面新建了个dll工程XXRes
然后选择添加了一个资源文件XXResources.resx
向里面添加了几张图片p1,p2...我在另一个工程里引用了这个资源文件using XXRes
在使用的时候pictureBox1 = global::XXRes.XXResources.p1这样没有问题,图片正常显示但是我每次得到的图片名称是一个名字,string
如何通过这个图片的名字获得该资源?在网上找了一些方法,都不好用啊。
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
}
}
}
我的图片封装到资源文件并打包成dll了啊
不能用FormFile吧
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));
}
最主要的是我不知道这是在读哪个资源文件啊?
我的资源文件是单独打包成dll的,是项目之外的一个项目,不是嵌入的资源文件。
ResourceManager rm = new ResourceManager("资源文件名", asm);
pictureBox1.BackgroundImage= Image.FromStream(rm.GetStream("图片名"));
System.Resources.ResXResourceReader可以自己制作 resx 资源文件,在程序中加载使用.
这种方法就可以了。
一般资源文件的名称是“命名空间”.“图片名字”WindowsApplication1.1.jpg
这个名称中WindowsApplication1是命名空间,1.jpg是图片的名字
查了msdn
我先用Resgen.exe把.resx转成.resources文件
然后再用Al.exe把.resources打包成dll
再用这种方法就OK了。
要把rm.GetStream改成rm.GetObject