WPF的文字阅读和Flow Document支持,以及新的纽约时报,每日邮报,和西雅图邮报Intelligencer的阅读器程序
【原文地址】WPF Text Reading and Flow Document Support, and the new NYTimes, Daily Mail, and Seattle Post-Intelligencer Reader Applications
【原文发表日期】 Thursday, February 22, 2007 12:11 PM
Windows Presentation Foundation (WPF,即Avalon) 对Windows客户端开发来说,向前迈进了巨大的一步,它提供了超丰富的.NET UI 框架,其集成了矢量图形,丰富的流文字支持(flow text support),3D视觉效果和强大无比的控件模型框架。你可以从.NET 3.0 得到WPF 支持,.NET 3.0是内置于Windows Vista 中的,对其他的Windows操作系统版本则可以单独下载得到。
Visual Studio Orcas中将随行发布一个丰富的所见即所得(WYSIWYG)设计器以及相关项目支持,可以让开发人员轻松地开发 WPF应用。Microsoft Expression套版 美工产品也将向美工提供杀手级的支持(killer support),可以让美工对WPF视觉和交互性进行设计 (Expression Blend是这方面的专门产品)。
Visual Studio和Expression两者将共享同样的项目文件格式,意味着开发人员和美工可以天衣无缝地在单个项目上合作,而不用在开发过程中互相打架了(因为基于XML的XAML文件定义了应用的UI和样式,而单独的 .cs/.vb 文件则包含了程序员对XAML编程的后台代码)。你现在就可以下载Microsoft Expression的 Beta 2 版本。下几个星期里,我们将在网上发布Visual Studio Orcas 二月份的CTP版本,该版本将拥有内置的WPF设计器,并提供对WPF的强大的代码编写的支持。
WPF文字阅读和Flow Document特性
WPF包括了大量的丰富排版的支持,将显著改进文字在屏幕上的显示,极大地改进数字文字阅读的体验。排版上的高级特性,象ClearType 对亚像素级(sub-pixel )的定位和Y方向平滑的支持, 象连写(ligature),传统的数字,花体(swash),以及文脉选择 (contextual alternatives)这样的OpenType特性,可以使文字的质量,跟普通的HTML以及其他的Windows客户端图形技术相比,高出很多很多,而且可以极大地提高用户阅读内容的速度。
作为UI布局和控件模型体验的一部分,WPF也提供了对Flow Document的内置支持。Flow Document的功能对随窗口大小,内容语义(semantics),以及应用的设备分辨率之不同而重新流动内容提供了自动支持。譬如,你可以在WPF中的FlowDocumentPageViewer控件中装载文字,图像,录像和任何WPF控件,然后让其自动地改变大小和为你自动地跨越多列/多页来分页显示文字。
下面是纽约时报阅读器程序中的实际例子(帖子后面对该程序还有另述)。注意,文章是自动跨2列换行显示的,并注意屏幕下方的 "Page 1 of 2" 导航和放大UI:
为帮助示范如何在你自己的应用里实现同样的内容流动行为,我在下面使用WPF的内置FlowDocumentPageViewer控件编写了一个简单的样例,下面是该应用的所有内容(全部是XAML,不需要后台代码):
<Window x:Class="WPFApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<Grid>
<FlowDocumentPageViewer>
<FlowDocument>
<Paragraph>
This is a paragraph of text.
</Paragraph>
<Paragraph>
This is another paragraph of text.
</Paragraph>
<Paragraph>
My movers are carrying my TV out right now.
</Paragraph>
<Paragraph>
I hope that loud bang wasn't the TV being dropped.
</Paragraph>
<BlockUIContainer>
<Button Content="Button" />
</BlockUIContainer>
<Paragraph>
This is another paragraph.
</Paragraph>
</FlowDocument>
</FlowDocumentPageViewer>
</Grid>
</Window>
现在我运行这个应用时,我会得到一个窗口,对这个内容,其默认大小为300x300像素 :

就象你预期的,我得到几个文字段落。注意,我也能够在内容里直接内嵌WPF按钮控件(我可以在其中放置任何WPF控件)。也注意一下上面由FlowDocumentPageViewer提供的自动内容分页控件和内容大小滑标器(slider)。
然后,当我改变窗口大小,使它更短,更宽时,你会注意到内容被FlowDocumentPageViewer自动分成两列。我不用写任何编码就得到了这个行为:
我也可以稍微缩窄窗口,放大内容(使用底部的滑标)。注意内容(文字和按钮)在屏幕上是如何变大的,以及FlowDocumentPageViewer 控件是如何自动为我对内容做了分页 (我在下面的适当UI部分用红笔加了圆圈做标记):
你可以看到,这非常容易实现,其结果是个简单但强有力的应用。很明显地,我可以调用一个web-service或者RSS feed来动态地填充内容,而不是在应用里硬写内容。我将得到同样的分页和流机制(semantics)。
WPF应用 纽约时报阅读器,每日邮报阅读器,和 西雅图邮报Intelligencer阅读器可从网上下载
WPF的文字支持真的开启了无穷多的机会来创造更深入,更加个人化的阅读体验(此外,WPF真的可以为一个博客阅读客户端所用)。
我的开发队伍,正与很多报纸和杂志出版商合作,帮他们开发和发布针对他们内容的个人化的阅读器程序。除了提供丰富的文字支持外,这些阅读器都支持离线内容(意味着你在线时同步内容,然后可以在离线不在网络上时阅读所有的东西,当你在飞机,火车或者公车上时,这可是非常理想)。阅读器程序也提供丰富的查询视觉效果,同时提供内容评注支持等:
去年九月纽约时报发布了这个定制的纽约时报阅读器程序(点击这里免费下载和使用):
今天,西雅图邮报Intelligencer也推出了阅读器程序(点击这里免费下载和使用):
英国的每日邮报也推出了阅读器(点击这里免费下载和使用):
更多的知名出版商在将来的几个月内也会陆续推出类似的应用。
我们也将推出一个出版商Reader SDK ,以允许任何人开发类似的定制阅读应用。网站将能够提供带有自定义扩展的RSS feed(以内嵌分页规则,广告放置细节等等),然后,开发人员将能够轻易地建造定制的WPF 阅读器客户端应用来进一步增强体验。
Tim Sneath在他这里的精彩博客上对此做了更详细的讨论。
如何进一步了解WPF
想进一步了解WPF中Flow Document支持的话,我建议你阅读一下MSDN这里的这篇精彩文章。
最近刚出版了几本很好的WPF的书,可以帮助你对WPF上手。Adam Nathan 出版了一本非常好的《 Windows Presentation Foundation Unleashed 》书,目前已在售,在亚马逊书店上获得了好评(十个评语,5星评分):
Chris Sells 和 Chris Anderson两人将在下几个月内出版自己的WPF书,我已经读过初稿,非常喜欢。这里是Chris Anderson的《Essential WPF》在亚马逊书店上的连接,该书将在四月份出版。我刚开始阅读Chris Sell更新的WPF书,也非常喜欢他的书,等该书在亚马逊书店的连接一出来,我会更新这个博客贴子。
希望本文对你有所帮助,
Scott
Read the complete post at http://blog.joycode.com/scottgu/archive/2007/02/27/93905.aspx