摘要: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,不需要後台程式碼):
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>
現在我運行這個應用時,我會得到一個視窗,對這個內容,其預設大小為300×300像素 :
就像你預期的,我得到幾個文欄位落。注意,我也能夠在內容裡直接內嵌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