PrintPreviewControl 印刷プレビュー
フォームにPrintPreviewControlとPrintDocumentコントロールを貼り付ける。要は自分で印刷プレビューを作成する。
Private Sub PrintDocument1_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
'このイベントは現在のページに印刷する出力が必要なときに発生します。とMSDNにある
'具体的には、フォームデザイン時PrintPreviewControl1のVisibleがfalseになっているのをTrueにした場合。
'ボタンイベント等でプレビュー画像を切り替えるのは不可能。
'切り替えたい場合は一旦フォームを閉じる必要がある。
'他にはデザイン時PrintPreviewControl1のドキュメントプロパティーにこのPrintDocument1を設定した場合。
'フォームロード時にPrintPreviewControl1のドキュメントプロパティーにこのPrintDocument1を設定した場合。
'となるようだ。
'メタファイルオブジェクト作成
Dim metafile As New Imaging.Metafile(Application.StartupPath & "\test.EMF")
Dim k As Single
Dim ra As Rectangle
'画面・紙のサイズに収まるようにアバウトで計算
k = e.MarginBounds.Width / metafile.Size.Width
'描画領域 画像サイズを縮小または拡大
ra.Width = metafile.Size.Width * k
ra.Height = metafile.Size.Height * k
'サイズを変えて出力
e.Graphics.DrawImage(metafile, ra)
'オブジェクトを破棄
metafile.Dispose()
'文字列を書き込み
e.Graphics.DrawString("メタファイルサンプル印刷", _
New Font("MS 明朝", 32), Brushes.Black, _
e.MarginBounds.Left, e.MarginBounds.Top, _
New StringFormat)
'次のページがないことを通知する
e.HasMorePages = False
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'フォームサイズに合わせて縮小拡大
Me.PrintPreviewControl1.AutoZoom = True
Me.PrintPreviewControl1.Document = Me.PrintDocument1
End Sub
|
|