• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

[Codeproject每日一荐] 小工具:assembly中嵌入图片抓取器(C#)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

最近有点需要这个东东,本来打算自己写一个,无意发现CodeProject最近有这么篇文章,很高兴地拿来用之,并且通过看别人的东西反省自己想法的不足.顺便做下广告以示感谢:

Extracting Embedded Images From An Assembly By Josh Smith


[介绍]
该文介绍了一个非常实用的小工具:assembly中嵌入图像抓取器, 可以从.NET的assembly里面查看,保存和复制潜入的图片,图标,鼠标图案. 小工具是用.NET framework 2.0编译的, 但如有必要,核心代码很容易移植到1.0.

[背景]
首先回顾一下嵌入的资源. 创建一个assembly时, 可在其中嵌入任意的资源文件, 如BMP位图, XML文件等. 这些文件被称作嵌入的资源. 在assembly中嵌入资源有以下好处:

简化部署 (需要管理的文件变少了).
简化资源使用 (运行时不可能找不到文件了).

Visual Studio .NET中可以如下步骤方便地嵌入资源:
1. 添加一个图片到工程中:
2. Solution Explorer中, 右键点击该图片文选择"属性".
3. 在"属性"窗口中"生成操作"(Build Action)选择"嵌入的资源"(Embedded Resource)
4. 编译项目.

如你所想,.NET framework提供了编程时取得嵌入的资源的支持,将在后文介绍.

[使用] 

(译者:使用及其简单,就不啰嗦了)值得一提的是支持拖放操作:

[代码]
从assembly中提取图片并显示在UI上的方法是主要LoadImagesFromAssembly.

private void LoadImagesFromAssembly( string assemblyPath )
}

如上, ImageGrabberForm 用BindingSource组件存储图片供数据绑定. BindingNavigator, DataGridView, PropertyGrid 和PictureBox都绑定到这一数据源,就可以相当简单地在各UI元素间保持一致.

从assembly中提取图片的实际工作是在ExtractImagesFromAssembly 方法中:

private List<ImageInfo> ExtractImagesFromAssembly( Assembly assembly )
}

上面的代码在assembly中为每个已命名资源都打开一个流,然后依次尝试从流中创建图标Icon, (失败的话创建)光标Cursor, (失败的话创建)图片Image, 全部失败的话通过System.Resources.ResourceReader读取内容. 这个resource reader可以把图片,图标和ImageList中的图片从资源文件.resx中提取出来. ImageInfo类是用来存取图片及其辅助信息的.

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#2.0——新特性实践之Generic发布时间:2022-07-14
下一篇:
C# 打印Word文档发布时间:2022-07-14
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap