1. 程式人生 > >vb.net 教程 11-1 列印元件 補充資料

vb.net 教程 11-1 列印元件 補充資料

我把列印裡面自己容易迷糊的地方在這裡做個記錄:

1、Printing元件和PageSetupDialog元件之間的關聯

(1)Printing元件使用PageSetupDialog中設定的引數:

        Dim psettings As Printing.PageSettings
        If PageSetupDialog1.ShowDialog = DialogResult.OK Then
            psettings = PageSetupDialog1.PageSettings
        Else
            Exit Sub
        End If
        PrintDocument1.DefaultPageSettings = psettings

(2)PageSetupDialog元件使用Printing中設定的引數(謝謝網友 keepee  的指正):1

PageSetupDialog1.Document = PrintDocument1  

2、列印的時候使頁邊距有效:

PrintDocument. OriginAtMargins屬性:指示與頁關聯的圖形物件的位置是位於使用者指定邊距內,還是位於該頁可列印區域的左上角。如果圖形原點起始於頁邊距,則為 true;如果圖形原點位於可列印頁的左上角,則為 false。 預設值為 false。
也就是說,如果我們要讓設定的頁邊距真實有效,那麼應該將OriginAtMargins設定為True。

    '列印頁面
    Private Sub PrintDocument1_PrintPage(sender As Object, e As Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
        Dim g As Graphics = e.Graphics
        If i = 0 Then
            g.DrawRectangle(New Pen(New SolidBrush(Color.Red), 2), New Rectangle(10, 10, 100, 60))
            g.DrawString("vb.net教程 http://blog.csdn.net/uruseibest", New Font("宋體", 20), New SolidBrush(Color.Blue), New Point(10, 80))
            g.DrawString("這是一個列印的例子:第1頁", New Font("宋體", 20), New SolidBrush(Color.Blue), New Point(10, 120))
            g.DrawImage(PictureBox1.Image, New Rectangle(10, 160, 600, 400), New Rectangle(0, 0, PictureBox1.Image.Width, PictureBox1.Image.Height), GraphicsUnit.Pixel)
            i = i + 1
            e.HasMorePages = True
        Else
            g.DrawRectangle(New Pen(New SolidBrush(Color.Red), 2), New Rectangle(10, 10, 100, 60))
            g.DrawString("vb.net教程 http://blog.csdn.net/uruseibest", New Font("宋體", 20), New SolidBrush(Color.Blue), New Point(10, 80))
            g.DrawString("這是一個列印的例子:第2頁", New Font("宋體", 20), New SolidBrush(Color.Blue), New Point(10, 120))
            g.DrawImage(PictureBox1.Image, New Rectangle(10, 160, 600, 400), New Rectangle(0, 0, PictureBox1.Image.Width, PictureBox1.Image.Height), GraphicsUnit.Pixel)
            e.HasMorePages = False
        End If
    End Sub

呼叫程式碼如下:

    '按下列印按鈕
    Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click

        Dim ps As New Printing.PaperSize()
        ps.PaperName = "我的自定義紙張"
        ps.Height = 600
        ps.Width = 400
        PrintDocument1.PrinterSettings.PrintToFile = True
        PrintDocument1.PrinterSettings.PrintFileName = "d:\dd.xps"

        PrintDocument1.DefaultPageSettings.PaperSize = ps

        Dim psettings As Printing.PageSettings
        If PageSetupDialog1.ShowDialog = DialogResult.OK Then
            psettings = PageSetupDialog1.PageSettings
        Else
            Exit Sub
        End If
        PrintDocument1.OriginAtMargins = True       '設定頁邊距是否有效。也就是相對頁邊距還是列印紙張位置繪圖。
        PrintDocument1.DefaultPageSettings = psettings
        PrintDocument1.Print()
    End Sub

當彈出列印對話方塊時,大家可以設定不同的頁邊距進行測試。

可以將 PrintDocument1.OriginAtMargins = True 去掉再進行對比。

由於.net平臺下C#和vb.NET很相似,本文也可以為C#愛好者提供參考。

學習更多vb.net知識,請參看 vb.net 教程 目錄