Silverlight 4 中的列印功能
過去的Silverlight 1,2,3,經歷了22個月,改版速度快的讓人吒舌了,但是我相信沒有比PDC的時候SL4 beta突然推出更讓人訝異的事情了,真的,我們不是前陣子才在SL3 Launch嗎? SL4 beta已經出了? 真是驗證了我以前烏鴉嘴講的揣測,看來Silverlight的改版硬是要直接追上.NET Framework的進度,一起邁向 4.0。
不過我們更關心的,是SL4增加了哪些功能? 第一個想跟你分享的,是Silverlight的列印機制,SL4提供了一個簡單到不行的概念,但其實還真的蠻實用的東西。
請參考底下這個測試頁面:[列印功能測試]
但請注意,測試前需先安裝SL4 Developer runtimes: Windows 然後才能執行
你會發現這個小程式很輕易的SL把畫面列印出來了,這個功能怎麼完成?
看看程式碼,簡單到不行:
這個列印程式的概念幾乎和WinForm差不多,只是當然相較之下也陽春一些,但是對大多數Web應用程式來說已經夠用了,甚至很多原本ASP.NET沒法做到的列印控制,我們現在開始可以用SL建立解決方案,如果我真的要做出一些比較優質的列印效果,需要做的也只不過是利用SL在場景上繪製張圖,然後丟給PageVisual,你會發現PageVisual可以接受任何UIelement物件(包含Image),然後就那麼自然的印出來了,簡單到不行。但卻方便好用...
看來不多久就會出現SL的報表或列印解決方案套裝軟體了。
不過我們更關心的,是SL4增加了哪些功能? 第一個想跟你分享的,是Silverlight的列印機制,SL4提供了一個簡單到不行的概念,但其實還真的蠻實用的東西。
請參考底下這個測試頁面:[列印功能測試]
但請注意,測試前需先安裝SL4 Developer runtimes: Windows 然後才能執行
你會發現這個小程式很輕易的SL把畫面列印出來了,這個功能怎麼完成?
看看程式碼,簡單到不行:
Imports System.Windows.Printing
Partial Public Class MainPage
Inherits UserControl
Public Sub New()
InitializeComponent()
End Sub
'列印物件
Private WithEvents pd As PrintDocument
'PrintDocument的PrintPage事件負責處理要列印的東西
Private Sub pd_PrintPage(ByVal sender As Object, _
ByVal e As PrintPageEventArgs) Handles pd.PrintPage
e.PageVisual = Me '將表單本身(me)列印出
e.HasMorePages = False '後續沒有其他頁面要列印
End Sub
'Button1被按下
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles Button1.Click
pd = New PrintDocument()
pd.DocumentName = "文件名稱" '顯示文件名稱
'列印
pd.Print()
End Sub
End Class
這個列印程式的概念幾乎和WinForm差不多,只是當然相較之下也陽春一些,但是對大多數Web應用程式來說已經夠用了,甚至很多原本ASP.NET沒法做到的列印控制,我們現在開始可以用SL建立解決方案,如果我真的要做出一些比較優質的列印效果,需要做的也只不過是利用SL在場景上繪製張圖,然後丟給PageVisual,你會發現PageVisual可以接受任何UIelement物件(包含Image),然後就那麼自然的印出來了,簡單到不行。但卻方便好用...
看來不多久就會出現SL的報表或列印解決方案套裝軟體了。
留言
我試了C#的msdn範例, 也只能直接列印, 無法先預覽再決定是否列印, 請問列印預覽你還有詳細一點的資料嗎?