PrintPreviewControl 印刷プレビュー


VB Tips And Sample(HOME)(VB.NET Sample インデックス)





フォームに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







VB Tips And Sample(HOME)(VB.NET Sample インデックス)