7.[印刷プレビュー]ダイアログボックスの使用方法(28_Dai_07) (旧、SampleNo.055) |
1.[印刷プレビュー]のダイアログボックスの表示と各種表示設定方法 2.[印刷プレビュー]のダイアログボックスの表示に関する付帯設定 3.上記実行図及び使用コントロールと配置図(参考) 4. 5. 6. [ページ設定] 及び[印刷プレビュー] 及び [印刷] のダイアログも同時に使用する事になりますのでそちらの設定も合わせてご覧下さい。 |
下記プログラムコードに関する補足・注意事項 動作確認:Windows 8.1 (Windows 7) / VB2013 (VB2010) / Framework 4.5.1 / 対象の CPU:x86 Option :[Compare Text] [Explicit On] [Infer On] [Strict On] Imports :System.Drawing.Printing 参照設定:追加なし 使用コン:Button1 〜Button4 / TextBox4 / PictureBox1 配置図参照 トロール: このサンプル等の内容を無断で転載、掲載、配布する事はお断りします。(私の修正・改訂・削除等が及ばなくなるので) 必要ならリンクをはるようにして下さい。(引用の場合は引用元のリンクを明記して下さい) |
1.[印刷プレビュー]のダイアログボックスの表示と各種表示設定方法 |
Private WithEvents PrintDocument1 As New Printing.PrintDocument Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click Call sPrintPreview(PrintDocument1) End Sub Public Sub sPrintPreview(ByRef printDoc As PrintDocument) '[印刷プレビュー]のダイアログボックスの表示位置と大きさを設定 'PrintPreviewDialog クラスのインスタンスを作成(ツールボックスから貼り付ける場合は必要ありません) Dim PrintPreviewDialog1 As New PrintPreviewDialog With PrintPreviewDialog1 '★印刷設定情報をタイトルに表示 .Text = GetPageSet(printDoc) 'プレビューするドキュメントを設定 .Document = printDoc '★印刷プレビューの画面の[印刷]のボタンを非表示にする場合 False Dim ts As ToolStrip = TryCast(.Controls("toolStrip1"), ToolStrip) If ts IsNot Nothing Then ts.Items("printToolStripButton").Visible = True End If '★表示位置を設定 .StartPosition = FormStartPosition.Manual .Location = New Point(5, 5) '★表示するダイアログの大きさを設定する .Size = New Size(550, 650) 'A4 の全体画像が表示できる '★印刷プレビューの表示倍率を指定 .PrintPreviewControl.Zoom = 0.5 Dim tsb As ToolStripSplitButton = DirectCast(ts.Items!zoomToolStripSplitButton, ToolStripSplitButton) '自動のチェックマークを非表示に DirectCast(tsb.DropDownItems(0), ToolStripMenuItem).Checked = False '50% のところにチェックマークを表示 DirectCast(tsb.DropDownItems(6), ToolStripMenuItem).Checked = True '[印刷プレビュー]のダイアログボックスを表示 .ShowDialog() End With End Sub |
2.[印刷プレビュー]のダイアログボックスの表示に関する付帯設定 |
Public Function GetPageSet(ByRef printDoc As PrintDocument) As String With printDoc Dim paperSize As String = .DefaultPageSettings.PaperSize.Kind.ToString() Dim landscape As String = "縦" If .DefaultPageSettings.Landscape = True Then landscape = "横" End If Dim copies As String = .PrinterSettings.Copies.ToString() Dim margins As String = String.Format("左={0} 右={1} 上={2} 下={3}", _ CInt(.DefaultPageSettings.Margins.Left * 0.254), _ CInt(.DefaultPageSettings.Margins.Right * 0.254), _ CInt(.DefaultPageSettings.Margins.Top * 0.254), _ CInt(.DefaultPageSettings.Margins.Bottom * 0.254)) Dim printerName As String = .PrinterSettings.PrinterName GetPageSet = String.Format("{0} 用紙サイズ {1} / {2} 印刷部数={3} 余白 {4}", _ printerName, paperSize, landscape, copies, margins) End With End Function Private Sub PrintDocument1_PrintPage(sender As Object, _ e As Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage '各ダイアログの設定値の確認ためのテスト印刷処理(適当になにか設定しておいて下さい。) '印刷余白(印刷開始位置)を取得(.NET Framework version 2.0 からの機能です) '仮に、左余白を 0 mm に設定しても実際にプリンターでの印刷開始位置は、実用紙上では 'HardMarginX の値からの印刷開始となります。 '従って、左余白 = 10 mm の設定であれば、(10 - HardMarginX)の位置から印刷する必要がある 'こちらは、1/100 インチ単位での設定となります。 '実用紙での左端からの余白位置 Dim inchLM As Single = e.MarginBounds.Left - e.PageSettings.HardMarginX '実用紙での上端からの余白位置 Dim inchTM As Single = e.MarginBounds.Top - e.PageSettings.HardMarginY 'PictureBox1.Image の印刷設定 Using myPic As New Bitmap(PictureBox1.Image) '指定の位置から画像のサイズ(Pixel単位)で印刷 Dim rect As New RectangleF(inchLM, inchTM, myPic.Width, myPic.Height) e.Graphics.DrawImage(myPic, rect) End Using 'テキストの印刷設定 'mm 単位でのプリンター独自の印刷余白 '実用紙での左端からのプリンター独自の印刷開始位置 Dim mmLM As Integer = CInt(0.254! * e.PageSettings.HardMarginX) '実用紙での上端からのプリンター独自の印刷開始位置 Dim mmTM As Integer = CInt(0.254! * e.PageSettings.HardMarginY) Using g As Graphics = e.Graphics 'ミリメートルを長さの単位に指定します。 g.PageUnit = GraphicsUnit.Millimeter Using myFont As New System.Drawing.Font("MS Pゴシック", 12) Using myBrush As New SolidBrush(ColorTranslator.FromOle(RGB(255, 0, 0))) g.DrawString("■ 左から 35mm 上から 20mm の位置に印刷しました。", myFont, myBrush, 35 - mmLM, 20 - mmTM) End Using 'テキストボックスの内容を印刷する場合、つづいて左から20mm 上から30mm の位置に印刷します g.DrawString(TextBox1.Text, myFont, Brushes.Blue, 20 - mmLM, 30 - mmTM) End Using '今回は、印刷設定が主題ではないので複数ページの印刷等には対応していない。 End Using End Sub |
3.上記実行図及び使用コントロールと配置図 |
図1.上記実行図及び使用コントロールと配置図 |
4. |
5. |
6. |
検索キーワード及びサンプルコードの別名(機能名) |
ダイアログボックス Dialog Box |