vb.net 教程 11-1 列印元件 補充資料
阿新 • • 發佈:2018-12-22
我把列印裡面自己容易迷糊的地方在這裡做個記錄:
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 教程 目錄