程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> 如何打印當前窗體

如何打印當前窗體

編輯:.NET實例教程

前幾天在CSDN看到有朋友問到怎麼打印 當前的窗體,今天有空,將這段代碼發布出來提供給其他感興趣的朋友參考!
在窗體的代碼裡面:
Imports System.Drawing.Printing  ‘導入這個命名空間

’這個方法被關聯到打印文檔的PrintPage事件
 Private Sub printhandler(ByVal sender As Object, ByVal e As PrintPageEventArgs)
        e.Graphics.DrawImage(memoryImage, 0, 0)
    End Sub

’在窗體初始化 的時候將打印文檔的該事件綁定到處理方法
AddHandler mPrintDoc.PrintPage, AddressOf printhandler

''聲明幾個變量
 Private WithEvents mPrintDoc As New PrintDocument
    Dim memoryImage As Bitmap

‘這裡啟動打印任務。
    public Function Print() As Boolean
        Try
            Dim myGraphics As Graphics = Me.CreateGraphics()   ’這個屬性很重要,可以繪制出當前窗體,打印其實就是先畫出要打印的東西,再將這個東西交給打印文檔,打印文檔類會負責與打印機的交互細節。可以將這個graphics理解為一張畫布,使用鉛筆鋼筆或者調色板來畫東西
            Dim s As Size = Me.Size
            memoryImage = New Bitmap(s.Width, s.Height, myGraphics)   ‘取得要打印的圖片
            Dim memoryGraphics As Graphics = Graphics.FromImage(memoryImage)  ’取得新的畫布,畫布上包含了指定大小的圖片
            memoryGraphics.CopyFromScreen(PointToScreen(Me.Location).X, PointToScreen(Me.Location).Y, 0, 0, s)   ’將畫布輸出到打印機,注意PointToScreen方法,將會把窗體坐標轉換成屏幕坐標,否則打印的窗體不符合要求
             ''執行打印文檔的打印方法,該方法會觸發我們在初始化窗體時關聯的事件
            mPrintDoc.Print()
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
        Return MyBase.Print()
    End Function 

這樣子就可以打印當前的窗體了。可以看到,打印文檔所需要的資源都是在窗體內部進行提供的,可以繼承printdocumnet類,這樣的話就可以通過重寫文檔類的方法,將外部資源傳入給類,從而不會跟界面代碼糾纏在一起。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved