基于WPF图书阅读器设计与实现.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于WPF图书阅读器设计与实现

基于WPF图书阅读器设计与实现   摘 要:随着互联网的兴起,各种图书阅读器也应运而生,它们能提供类似纸张阅读感受的功能。为了让用户方便、快捷地管理指定文件夹下的图书,图书阅读器能实现图书阅读,并可以读取压缩包中的图片文件,支持一些特定的图书格式。本文主要描述使用WPF这个UI端技术来生成一个图书阅读器,包括系统架构、系统核心类的实现,特别是在WPF中使用了多线程技术和事件路由技术,让用户能够灵活自如地使用该工具进行图书阅读。   关键词:图书;阅读器;WPF   中图分类号:TP312 文献标识码:A   Abstract:A variety of book readers have come into being with the rise of the Internet,providing similar experience as paper reading.In order to allow users to manage the books in the specified folder conveniently and quickly,the book reader is designed to implement book reading,read picture files in a compressed file and supports some specific book formats.This paper mainly describes the book reader generated by using the UI technology of WPF,including the system architecture and the implementation of the system kernel class.Additionally,the multi-threading technology and the event routing technology are applied in WPF,which enable users to read books through this tool with ease.   Keywords:book;reader;WPF   1 引言(Introduction)   ?D书阅读器能提供以下功能:   (1)管理指定文件夹下的图书,在图书封面区中显示图书的封面。   (2)阅读书时,可以指定书签,并可以跳到指定的书籍。   (3)保存所有的状态,以便在下次继续读取书籍。   (4)提供对于压缩的内容访问,实现图像缓存管理。   (5)一旦一本书被打开,显示里面的页面和文件夹的结构。   本文介绍使用WPF这个UI端技术开发图书阅读器,该阅读器可以读取压缩包中的图片文件,支持一些特定的图书格式[1]。   2 图书阅读器系统架构(Book reader system   architecture)   图书阅读器仅包含一个WPF应用程序项目,由一个主窗体和多个用户控件组成。   在这个系统中出现的实体有图书目录、图书列表、图书、压缩格式的图书、图像缓存等。找出这些实体后,进行面向对象的抽象,找出一些有共性的实现未抽象基类或接口,以便于应对变化,而一些未变的可以直接定义为类,分析如下:   (1)文件夹可以直接定义为一个类。因为该对象相对固定,不同的文件夹除了名称和位置不一样之外,还可能会有一些其他变化的特性。   (2)每个文件夹包含多部书。因为图书的类型不是固定的,比如有压缩文件类型的图书和有其他格式的图书等,需要抽象出来实现为一个接口。   (3)每本图书包含多个页面。因为每个页面的格式是不同的,因此也需要进行抽象。   (4)每本图书会包含一个图像缓存,该缓存提供的功能相对固定,当然也可以进行进一步抽象,不过在本示例中将实现为一个单一的类,以求简化[2]。   经过上述分析,可以得出如图1所示的类结构图   Catalog代表一个文件夹类,它包含代表该目录下所有图书的ObservableCollection泛型集合类。IBook是抽象出来的代表一部图书的接口,它实现了INotifyPropertyChanged以便实现UI级别的绑定。BaseBook是一个实现了IBook接口的基类,提供了对于每本图书的基本实现,RarBook通过派生自BaseBook类,实现了压缩格式的图书对象。IBookItem接口是代表图书书页的接口,IBook接口包含一个类型为List泛型集合,来表示一本书的所有图书页。RarPage实现了IBookItem接口,提供了对于RarBook类型图书的书页实现。Ima

文档评论(0)

erterye + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档