用户操作
[留言]  [发消息]  [加为好友] 
订阅我的博客
XML聚合    FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
ivorstar的公告
文章分类
    存档

    原创  DotNet Compact Framework中位图资源的使用学习笔记 收藏

    问题:

    使用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 DeviceWindows Form应用,新建一个窗体:Form1,在窗体上拖入一个PictureBoxpbShow,将pbShowImage属性设置为你想要的位图。然后看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.batResEditor.cs这两个文件,ResEditor.cs是资源编辑器的源码,微软没有提供编译好了的程序,怎么说也算是支持了一把开源了。打开开始菜单 | 程序 | Microsoft Visual Studio .NET 2003 | Visual Studio .NET工具 | Visual Studio .NET 2003命令提示,定位到上面的目录,运行build.bat就能够编译ResEditor.cs这个文件了。运行ResEditor,就能够编译我们想要的资源了。界面如图:

    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是文件名,记住不要带后缀。这样就能正确地使用我们的位图资源了!^_^

    发表于 @ 2005年04月07日 21:52:00 | 评论( loading... ) | 编辑| 举报| 收藏

    旧一篇:不知道该写些什么。

    • 发表评论
    • 评论内容:
    •  
    Copyright © ivorstar
    Powered by CSDN Blog