ここでは印刷を行う基本的な方法を説明します。
印刷はPrintDocumentクラスのPrintメソッドで開始し、どのように印刷するかをPrintPageイベントハンドラ内に記述します。PrintPageイベントで受け取るPrintPageEventArgsオブジェクトのGraphicsを利用して、DrawImageやDrawStringメソッドなどを使って描画を行います。Graphics.DrawImageメソッドで画像を描画する方法については、「画像(Imageオブジェクト)を描画する」を参考にしてください。
次の例はフォームにあるボタン(Button1)をクリックすると、ページ余白の内側の部分いっぱいに画像"test.bmp"を表示させるものです。
'Imports System.Drawing 'Button1のClickイベントハンドラ Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click 'PrintDocumentオブジェクトの作成 Dim pd As New System.Drawing.Printing.PrintDocument 'PrintPageイベントハンドラの追加 AddHandler pd.PrintPage, AddressOf pd_PrintPage '印刷を開始する pd.Print() End Sub Private Sub pd_PrintPage(ByVal sender As Object, _ ByVal e As System.Drawing.Printing.PrintPageEventArgs) '画像を読み込む Dim img As Image = Image.FromFile("test.bmp") '画像を描画する e.Graphics.DrawImage(img, e.MarginBounds) '次のページがないことを通知する e.HasMorePages = False '後始末をする img.Dispose() End Sub
//using System.Drawing; //Button1のClickイベントハンドラ private void Button1_Click(object sender, System.EventArgs e) { //PrintDocumentオブジェクトの作成 System.Drawing.Printing.PrintDocument pd = new System.Drawing.Printing.PrintDocument(); //PrintPageイベントハンドラの追加 pd.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(pd_PrintPage); //印刷を開始する pd.Print(); } private void pd_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) { //画像を読み込む Image img = Image.FromFile("test.bmp"); //画像を描画する e.Graphics.DrawImage(img, e.MarginBounds); //次のページがないことを通知する e.HasMorePages = false; //後始末をする img.Dispose(); }
この方法では、既定のプリンタ(通常使うプリンタ)を使って印刷します。プリンタを選択して印刷する方法は、プリンタ選択ダイアログを表示して印刷するをご覧ください。
ここではPrintDocumentオブジェクトを自分で作成しましたが、Visual StudioのフォームデザイナでPrintDocumentコンポーネントをフォームに追加して利用する方法もあります。この方法についてはヘルプの「PrintDocument コンポーネント (Windows フォーム)」をご覧ください。
補足:印刷できる範囲をどのように取得できるかを補足します。まず、ページ全体の大きさはPrintPageEventArgs.PageBoundsプロパティで取得できます。また、印刷可能な範囲はPrintPageEventArgs.Graphics.VisibleClipBoundsプロパティで、ページ余白の内側の部分はPrintPageEventArgs.MarginBoundsプロパティでそれぞれ取得できます。
注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。