您的位置:首页 > 其它

DotNet Compact Framework中位图资源的使用学习笔记

2005-04-07 21:52 633 查看
问题:使用Visual Studio.net 2003编写一个在WinCE下运行的应用程序时,需要使用位图资源,于是使用下面的代码:Using System.Drawing;…..Bitmap picBitmap = new Bitmap(“pica.bmp”);……Pica.bmp就是我想要使用的位图文件,我将这个文件附加到工程目录中,编译通过,启动调试,但是发现虽然在部署这个应用程序的时候已经将pica.bmp复制到了WinCE Emulator中和应用程序同样的目录下,但是程序运行到这个位置总会抛出一个“FileNotFoundException”,而同样的代码在Windows应用程序中却运行的好好的。分析:由于各方面的经验不足,到现在也没想清楚。解决:1、 观察一下VS.net是怎样使用位图资源的。新建一个Smart Device的Windows Form应用,新建一个窗体:Form1,在窗体上拖入一个PictureBox:pbShow,将pbShow的Image属性设置为你想要的位图。然后看Form的源代码,发现问题所在了:System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(LoginForm));this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image")));

原来VS.net是通过.net资源文件来使用个中位图资源的。假设我们的项目名叫做SmartDeviceApplication1,命名空间叫做SmartApp那么在目录SmartDeviceApplication1/obj/DEBUG目录下你能够找到一个叫做SmartApp.Form1.resources的.net资源文件。这个文件是由.net自动生成的,但是因为我们要使用自己的资源,所以我们要学会编辑和使用这个文件。2、 编辑*.resources文件VS.net中自带了一个资源编辑器,叫做RESEDITOR,通常在/Program Files/Microsoft Visual Studio .NET 2003/SDK/v1.1/Samples/Tutorials/resourcesandlocalization/reseditor这个目录下(可能会由于Visual Studio.NET的版本的不同而不同吧),这个目录下将包含build.bat和ResEditor.cs这两个文件,ResEditor.cs是资源编辑器的源码,微软没有提供编译好了的程序,怎么说也算是支持了一把开源了。打开开始菜单 | 程序 | Microsoft Visual Studio .NET 2003 | Visual Studio .NET工具 | Visual Studio .NET 2003命令提示,定位到上面的目录,运行build.bat就能够编译ResEditor.cs这个文件了。运行ResEditor,就能够编译我们想要的资源了。界面如图:

这样的界面也算是很简洁了,使用也很简单:在Add下拉框中选择你要添加的资源类型,我们这里选的是:System.Drawing.Bitmap,在后面的TextBox里给他取一个名字,比如叫ForTest,点右边的Add按钮,

单击右边的…按钮,浏览到要添加的图片就可以了。从文件里另存为.resources的文件。3、 使用资源文件将编译好的文件附加到你的工程中,右键单击工程名,添加 | 添加现有项,选择资源文件,比如叫做MyRes.resources,我们在程序中需要ResourceManager来使用文件中的位图。ResourceManager还能用来解决软件的国际化问题,我们在这里就不介绍了。System.Resources.ResourceManager rm = new ResourceMagager(“SmartApp.MyRes”, System.Reflection.Assembly.GetExecutingAssembly());Bitmap picBitmap = (Bitmap)rm.getObject(“ForTest”);如果在资源文件中添加了string,我们就能直接使用getString了,而不需要用到强制类型转换。这里的SmartApp是我们的程序的命名空间,MyRes是文件名,记住不要带后缀。这样就能正确地使用我们的位图资源了!^_^
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: