印刷関連:印刷マージンの設定

VB2008でMarginsを使い印刷余白を設定する使用例サンプルです。

印刷関連へ



印刷余白を設定するには、PageSetupDialogコンポーネントのMargins コンストラクタを使用します。

■構文
Margins(left, right, top, bottom)

・引数
left  : Integer型 左マージン
right : Integer型 右マージン
top  : Integer型 上マージン
bottom : Integer型 下マージン

※.実際にテストした結果、近い長さになるのですが、なぜか指定した長さになりませんでした。
結果例:
10mm に設定すると 13mm
30mm に設定すると 27mm
60mm に設定すると 53mm
80mm に設定すると 72mm

原因は今後調べていきたいと思います。

■手順
1) フォームデザインで、コマンドボタンとPrintDocumentとPrintPreviewDialogとPageSetupDialogコンポーネントを配置します。

2)コマンドボタンクリックイベントで下記の内容を実行します。
 1.ページセットアップコンポーネントに印刷コンポーネントを指定します
 2.マージンを設定。
 3.印刷プレビューのShowDialog メソッド を実行します。

3)PrintPageイベントで、マージン枠とGraphicsクラスのDrawStringメソッドに印刷文字等を設定します。

■実行画面
左余白・右余白・上余白・下余白 を入力し「印刷」ボタンをクリックします。
印刷余白設定ソフト

上の設定での印刷プレビュー画面
赤枠が印刷マージンの枠です。
印刷マージンを設定し印刷した結果

■実行画面
余白の設定を変更し印刷します。
印刷マージンを修正

上の設定での印刷プレビュー画面
赤枠が印刷マージンの枠です。
印刷マージンを大きくした結果

■実行コード

Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim tleft As Integer
Dim tright As Integer
Dim ttop As Integer
Dim tbottom As Integer

'mmを1/100インチに変換
tleft = CInt(Val(TextBox1.Text) * 3.937)
tright = CInt(Val(TextBox2.Text) * 3.937)
ttop = CInt(Val(TextBox3.Text) * 3.937)
tbottom = CInt(Val(TextBox4.Text) * 3.937)

PageSetupDialog1.Document = Me.PrintDocument1
'余白を指定する
PageSetupDialog1.PageSettings.Margins = _
New System.Drawing.Printing.Margins(tleft, tright, ttop, tbottom)

Me.PrintPreviewDialog1.Document = Me.PrintDocument1
'印刷プレビューダイアログを表示
Me.PrintPreviewDialog1.ShowDialog()
'End If
End Sub

Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
e.Graphics.DrawRectangle(New Pen(Color.Red, 2), e.MarginBounds.Left, e.MarginBounds.Top, e.MarginBounds.Width, e.MarginBounds.Height)
'テキスト印刷
e.Graphics.DrawString("Visual Basic 2008 Express Edition実践入門", New Font("MS P 明朝", 20), _
Brushes.Black, e.MarginBounds.Left, e.MarginBounds.Top)
End Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
TextBox1.Text = "25"
TextBox2.Text = "25"
TextBox3.Text = "25"
TextBox4.Text = "25"
End Sub
End Class


Visual Basic 2008 Express Edition実践入門