在第一次使用VS的资源时,曾经感到困惑,不知道怎么调用资源,现在将VS中使用资源的两种方法写出来,供需要的人参考。
方法一:
在vs中生成windows应用程序时,系统会自动生成一个Resources.Designer.cs的文件,这个文件中定义的是一个类,这个类中包含的是项目中的资源信息。这个类名系统为我们定义为Resources。当我们在资源编辑器中为项目添加资源时,系统会自动在Resources类中为我们添加一个internal static类型的属性,这个属性就是程序中对此资源的引用。比如:
//我们在项目中添加了一个位图资源
//系统为我们在Resources类中添加了一个Bitmap属性
internal static System.Drawing.Bitmap ball {
get {
object obj = ResourceManager.GetObject("ball", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
//在程序中就可以通过以下方式来访问资源
Bitmap bt = Resources.ball;
方法二:
上面是利用VS来产生的资源,我们也可以在项目中添加自己的资源。在c#中提供了System.Resources命名空间,在此命名空间中,有很多的操作资源文件的类和接口。
首先我们定义一个ResourceWriter类的对象,然后调用其方法,就可以在硬盘上产生一个资源文件了。
ResourceWriter rw = new ResourceWriter ( "My.resources" ) ; // 为了方便起见,资源文件名最好为//*.resources 类型的,因为在引用资源文件时要取前面的*作为根名称
//rw.Generate ( ) ;
执行这两句后,在项目当前目录下就会产生一个名称为My.resources的文件,这就是刚刚产生的资源文件,现在这个资源文件是空的,我们要想其中添加资源。
添加资源的方法分为三种:一种是添加字符串资源,一种是添加其他的对象资源,分别使用以下函数:
Public void AddResource(string , byte【】); //添加字节数组
Public void AddResource(string, object); //添加其他类型资源
Public void AddResource(string, string); //添加字符串
两个函数string是添加资源的唯一的标志。
例如:
Icon ico = new Icon ( "Demo.ico" ) ;
Image canceloff = Image.FromFile ("cancel-off.png") ;
rw.AddResource ( "demo.ico" , ico ) ;//在资源文件中加入图标
rw.AddResource ( "cancel-off.png" , canceloff ) ; //在资源中加入图像
rw.AddResource ( "MyStr" , "从资源文件中读取字符串!" ); //在资源中加入字符串
添加完后就可以关闭资源文件了
rw.Generate ( ) ; //将添加的资源以系统默认的格式保存在磁盘上
rw.Close ( ) ;
这样整个创建资源文件的过程已经完成了,其中要注意:rw.Generate ( ) ;是打开资源文件,它必须房子Add函数之后。
在我们执行上面的代码后就会产生一个资源文件,我们下面要进行操作是对此文件进行的操作。
我们创建资源文件后,下面就是引用创建的资源。
首先,在项目解决方案目录中把刚才创建的文件添加到工程中,此时我们必须把资源房子目录Properties之下,及处在命名空间Project1.Properties之中。
使用ResourcesManager类来取出资源:
ResourceManager rm = new ResourceManager ( "Project1.Properties.My" ,
Assembly.GetExecutingAssembly ( ) ) ;
此函数中"Images" 必须为字符文件所在命名空间 . 根名称 , 如果第一个参数写错,就会产生异常。
使用这种方法产生的exe文件不需要资源文件处在同一目录中,因为这种方法是把资源文件载入项目中。
还有一种方法,是从exe当前目录中寻找资源文件,这种方法要求资源文件和exe文件放在同一目录下才能执行。
ResourceManager rm = ResourceManager.CreateFileBasedResourceManager("My", ".", null);
第一个参数为资源文件的根目录。
这两种方法均可以打开一个资源文件,现在要取出文件中的资源了,这里类为我们提供了两个方法:
Object GetString(string); //取得字符串
Object GetObject(string); //取得其他资源
例如:
String s = ( ( String ) rm.GetString ( "MyStr" ) ) ;
Icon icoDemo = ( ( Icon ) rm.GetObject ( "demo.ico" ) ) ;
Image a = ( ( Image ) ( rm.GetObject ( "ok-off.png" ) ) ) ;
这样我们就可以对资源进行操作了。
以上就是vs中资源的使用。