c语言创建文件:C#创建和使用资源文件来源: 发布时间:星期四, 2009年2月12日 浏览:109次 评论:0
创建资源文件 资源文件顾名思义就是存放资源文件资源文件在设计中有着自身独特优势他独立于源这样资源文件就可以被多个使用同时在设计时候有时出于安全或者其他方面原因考虑把重要东西存放在资源文件中也可以达到保密、安全效果那么VisualC#所使用资源文件中到底存放哪些东西呢?在用VisualC#创建资源文件大致可以存放 3种类型数据资源分别是字节、各种对象和串本文将结合个例子来具体介绍说明用VisualC#是如何创建资源文件 .用VisualC#在创建资源文件用到些概念和理论: 在.NetFrameWorkSDK中个名字叫.Resources名称空间在此名称空间中为应用提供了许多创建、存储和使用资源文件类和接口其中有个类叫ResourceWriterVisualC#就是通过这个类来实现创建、存储资源文件 2.VisualC#如何创建资源文件: 首先要继承个ResourceWriter类然后ResourceWriter类个思路方法Generate就可以产生个资源文件了具体语句如下: ResourceWriterrw=ResourceWriter("My.resources"); rw.Generate; 此时在磁盘中就会产生个名称为"My.resources"资源文件但此时资源文件没有任何内容下面我们就来看看如何往资源文件中添加资源 3.在资源文件中添加资源: 在ResourceWriter类中提供了个AddResource思路方法这个思路方法作用就是往资源文件中添加资源在VisualC#中对区别资源有着区别加入方式 (1).加入字节语法格式为: publicvoidAddResource(,); 注释:其中是在使用资源文件时候此字节在中唯标识符 (2).加入对象语法格式为: publicvoidAddResource(,object); 注释:其中是在使用资源文件时候此对象在中唯标识符 在本文中我们利用这种方式来加入图标和图象具体如下: Iconico=Icon("Demo.ico"); Imagecanceloff=Image.FromFile("cancel-off.png"); Imagecancelon=Image.FromFile("cancel-on.png"); Imagecancelover=Image.FromFile("cancel-over.png"); Imageokdown=Image.FromFile("ok-down.png"); Imageokoff=Image.FromFile("ok-off.png"); Imageokon=Image.FromFile("ok-on.png"); rw.AddResource("demo.ico",ico);//在资源文件中加入图标 //以下是在资源文件中加入图象 rw.AddResource("cancel-off.png",canceloff); rw.AddResource("cancel-on.png",cancelon); rw.AddResource("cancel-over.png",cancelover); rw.AddResource("ok-down.png",okdown); rw.AddResource("ok-off.png",okoff); rw.AddResource("ok-on.png",okon); (3).加入串具体语法如下: publicvoidAddResource(1,2); 注释:其中1是在使用资源文件时候此串在中唯标识符在本文中是如此使用: rw.AddResource("MyStr","从资源文件中读取串!"); 至此我们已经创建了个资源文件并且在资源文件中加入了若干个资源当然在这的后还应该注意保存此资源文件并关闭资源文件具体如下: rw.Close; 4.创建资源文件源代码: 通过上面论述我们不难理解下面这些代码下列代码作用就是创建个名称为"My.resources"资源文件并且在此资源文件中加入个图标资源若干个图象资源和个串资源具体代码如下: CreatResources.cs: using; using.Drawing; using.Resources; CreatResource { publicvoidMain { ResourceWriterrw=ResourceWriter("My.resources"); Iconico=Icon("Demo.ico"); Imagecanceloff=Image.FromFile("cancel-off.png"); Imagecancelon=Image.FromFile("cancel-on.png"); Imagecancelover=Image.FromFile("cancel-over.png"); Imageokdown=Image.FromFile("ok-down.png"); Imageokoff=Image.FromFile("ok-off.png"); Imageokon=Image.FromFile("ok-on.png"); rw.AddResource("demo.ico",ico); rw.AddResource("cancel-off.png",canceloff); rw.AddResource("cancel-on.png",cancelon); rw.AddResource("cancel-over.png",cancelover); rw.AddResource("ok-down.png",okdown); rw.AddResource("ok-off.png",okoff); rw.AddResource("ok-on.png",okon); rw.AddResource("MyStr","从资源文件中读取串!"); rw.Generate; rw.Close; } } 最好还要提醒下在成功编译成执行文件后在执行此文件时候必须保证在此执行文件相同目录存在上面代码中提到名称图标和图象否则在创建资源文件时候是会出错 5.整理总结: 可见用VisualC#创建资源文件并不是个复杂过程在下篇文章中我们将介绍如何在VisualC#使用资源文件中资源这才是VisualC#资源文件编程重点和难点当然文中所使用资源文件就是以本文中创建资源文件 使用资源文件 在VisualC#资源文件编程--创建资源文件中已经介绍了如何用VisualC#创建资源文件本文将接着上篇文章话题来探讨资源文件另外个问题在VisualC#如何使用资源文件在上篇文章中我们已经成功创建了个名称为"My.resources"资源文件这个资源文件中包含有个图标资源在文件中名称为"demo.ico"若干个图片资源和个串资源在文件中名称为"MyStr"我们将以上篇文章创建此资源文件为对象结合个具体例子来看下用VisualC#如何使用资源文件 .本文设计和运行软件Software环境: (1).微软公司视窗2000服务器版 (2)..NetFrameWorkSDKBeta2 2.设计中些概念和理论: 设计时涉及到概念和理论主要是 2种变量相互转换这就是 2种变量就是所谓实值类型变量(ValueTypeVariable)和参考类型变量(ReferenceTypeVariable)而 2者的间相互转换在VisualC#中被称为装箱(Boxing)和出箱(Unboxing)所谓装箱就是把实值类型变量转换成参考类型变量过程反的就是出箱那么什么类型变量是参考类型变量什么类型变量又是实值类型变量呢?这 2者的间有什么区别么?在VisualC#中参考类型就是泛指这些类型如:Object、Class、Interface、Delegate、String、Array等这些类型定义变量就是参考类型变量而实值类型就是平常平常使用整型、布尔型、枚举型等由这些类型定义变量就是实值类型变量他们的间最大区别是参考类型变量是指向实体对象指针而实值类型变量就是实在实体对象由于装箱和出箱是个概念性很强操作过程详细介绍需要很大篇幅而这超出了本文探讨主要范畴所以本文只介绍和相关操作即出箱具体操作步骤将在下届结合来介绍 3.设计思路已经重要步骤解决思路方法: (1).如何在编译时候中嵌入资源资源文件和是 2个独立文件要把资源文件嵌入到最后生成中需要在编译时候加上"/resource"命令这个命令可以简写为"/res"在本文中名称为"use.cs"资源文件名称为"My.resources"则把资源嵌入编译命令如下: Csc.exe/res:My.resourcesuse.cs (2).如何在管理资源文件中资源: 在.NetFrameWorkSDK这提供了个有关资源文件创建和使用名称空间--.Resources在这个名称空间中有个Class为ResourceManager这个Class主要作用就是管理并使用资源文件VisualC#是通过这个类来管理并使用嵌入中资源文件中资源下列代码就是定义个ResourceManager类来管理嵌入资源文件中资源: ResourceManagerrm=ResourceManager("Images",Assembly.GetExecutingAssembly); (3).如何在中使用资源文件中资源: 在上篇文章中我们已经了解到在创建资源文件时候使用了AddResource思路方法来加入资源他语法中第个参数是用户可以定义串这个串就是资源在资源文件唯标识在设计中就是通过这个唯标识符来使用某个资源那么如何在中通过这个标识符来得到所需资源?这就要使用到ResourceManager类中GetObject()和GetString()思路方法这 2个思路方法作用是获得指定资源下面是这 2个思路方法语法: objectGetSting(String) objectGetObject(String) 其中"String"就是资源在资源文件中那个唯标识符细心读者可能已经注意到这 2个思路方法返回值都是个Object类型变量也就是个参考类型变量而在中串或者图象等是个实值类型变量这就需要进行转换而这种转换就是上面所说装箱和出箱下列代码是从资源文件中提取串、图象和图标资源: 提取串资源: Strings=((String)rm.GetString("MyStr")); 提取图标资源: IconicoDemo=((Icon)rm.GetObject("demo.ico")); 提取图象资源: Imagea=((Image)(rm.GetObject("ok-off.png"))); 4.结合个例子来看下资源文件具体使用思路方法: 下面例子所使用资源文件是上篇文章中创建资源文件"My.resources"中定义了 3个Lable组件其中 2个作用是显示资源文件中图象资源另外个作用是显示资源文件中串资源图标是取自资源文件中图标资源下面是源代码: using; using.Drawing; using.Collections; using.ComponentModel; using.Windows.Forms; using.Data; using.Resources; using.Reflection; publicForm1:Form { privateLabellblOK; privateLabellblCancel; private.ComponentModel.Containercomponents=null; privateLabellblResource; publicForm1 { //化窗体中组件 InitializeComponent; } //清除中使用过资源 protectedoverridevoidDispose(booldisposing) { (disposing) { (components!=null) { components.Dispose; } } base.Dispose(disposing); } privatevoidInitializeComponent { ResourceManagerrm=ResourceManager("Images",Assembly.GetExecutingAssembly); this.lblOK=Label; this.lblCancel=Label; this.lblResource=Label; this.SuspendLayout; this.lblOK.BackColor=.Drawing.Color.White; //使用资源文件中图象资源 this.lblOK.Image=((Image)(rm.GetObject("ok-off.png"))); this.lblOK.Location=.Drawing.Po(24,40); this.lblOK.Name="lblOK"; this.lblOK.Size=.Drawing.Size(75,23); this.lblOK.TabIndex=0; this.lblOK.Click.EventHandler(this.lblOK_Click); this.lblOK.MouseEnter.EventHandler(this.lblOK_MouseEnter); this.lblOK.MouseLeave.EventHandler(this.lblOK_MouseLeave); //出箱 //使用资源文件中图象资源 this.lblCancel.Image=((Image)(rm.GetObject("cancel-off.png"))); this.lblCancel.Location=.Drawing.Po(152,40); this.lblCancel.Name="lblCancel"; this.lblCancel.Size=.Drawing.Size(75,23); this.lblCancel.TabIndex=1; this.lblCancel.Click.EventHandler(this.lblCancel_Click); this.lblCancel.MouseEnter.EventHandler(this.lblCancel_MouseEnter); this.lblCancel.MouseLeave.EventHandler(this.lblCancel_MouseLeave); this.lblResource.Location=.Drawing.Po(88,8); this.lblResource.Name="lblResource"; this.lblResource.TabIndex=2; //出箱 //使用资源文件中串资源 this.lblResource.Text=((String)rm.GetString("MyStr")); this.AutoScaleBaseSize=.Drawing.Size(5,13); this.ClientSize=.Drawing.Size(240,101); this.Controls.Add(lblResource); this.Controls.Add(lblCancel); this.Controls.Add(lblOK); //出箱 //使用资源文件中图标资源 IconicoDemo=((Icon)rm.GetObject("demo.ico")); this.Icon=icoDemo; this.Name="Form1"; this.Text="VisualC#中使用资源文件!"; this.ResumeLayout(false); } voidMain { Application.Run(Form1); } privatevoidlblOK_MouseEnter(objectsender,.EventArgse) { ResourceManagerrm=ResourceManager("Images",Assembly.GetExecutingAssembly); this.lblOK.Image=((Image)(rm.GetObject("ok-on.png"))); } privatevoidlblOK_MouseLeave(objectsender,.EventArgse) { ResourceManagerrm=ResourceManager("Images",Assembly.GetExecutingAssembly); this.lblOK.Image=((Image)(rm.GetObject("ok-off.png"))); } privatevoidlblOK_Click(objectsender,.EventArgse) { ResourceManagerrm=ResourceManager("Images",Assembly.GetExecutingAssembly); this.lblOK.Image=((Image)(rm.GetObject("ok-down.png"))); } privatevoidlblCancel_MouseEnter(objectsender,.EventArgse) { ResourceManagerrm=ResourceManager("Images",Assembly.GetExecutingAssembly); this.lblCancel.Image=((Image)(rm.GetObject("cancel-onr.png"))); } privatevoidlblCancel_MouseLeave(objectsender,.EventArgse) { ResourceManagerrm=ResourceManager("Images",Assembly.GetExecutingAssembly); this.lblCancel.Image=((Image)(rm.GetObject("cancel-off.png"))); } privatevoidlblCancel_Click(objectsender,.EventArgse) { ResourceManagerrm=ResourceManager("Images",Assembly.GetExecutingAssembly); this.lblCancel.Image=((Image)(rm.GetObject("cancel-over.png"))); } } 5.整理总结: 至此我们已经完成了在VisualC#资源文件方面编程全部内容其中主要内容就是创建资源文件和使用资源文件 2大方面我想通过这 2篇文章介绍你对资源文件应该有了个比较全面认识了吧! 0
相关文章读者评论发表评论 |