|
|
 |
連載
Visual Basic
新しい印刷モデルの利用方法 |
|
1.印刷方法
- 印刷エンジンのデリゲート
Ver.6では Printerオブジェクトを使ってプリンタへの印刷を行うことができました。
.NETではこれに代わって PrintDocumentクラスなどの豊富なクラスライブラリから、自由にグラフィックを描画するように印刷編集が可能になりました。
用意されたオブジェクトには次のようなものがあります。
- PrintDocument (プリンタに出力を送信するオブジェクト)
- PrintDialog (プリンタや印刷するドキュメントを選択するダイアログを提供するオブジェクト)
- PrintPreviewDialog (印刷プレビューを表示するダイアログを提供するオブジェクト)
- PageSetupDialog (ページ設定を表示するダイアログを提供するオブジェクト)
- PageSettings (ページ設定を持つオブジェクト)
印刷のみの機能に絞れば、PrintDocumentクラスの利用だけになります。
処理の流れは通常のボタンをクリックした際のイベント処理と殆ど同じです。PrintDocumentクラスをボタン(Button)クラスに置き換え、
イベントハンドラのPrintPageメソッドをClickメソッドに置き換えて考えれば簡単です。
ただマウスをクリックするというイベントの発生が、PrintDocumentクラスのPrintメソッドでデリゲートに実行依頼します。
イベント処理でのデリゲートの仕組みがはっきりしない場合は「デリゲートの利用方法」 を参照して下さい。
 |
| 印刷の流れ |
- 大枠の処理の記述
では余計な処理を削った最も単純な方法で印刷機能のプログラミングしてみます。
ここではボタンをクリックしたら、"プリントテスト"と1行のみ印刷します。
フォーム上にはボタン(Button)とPrintDocumentクラスのコントロールを貼って下さい。
PrintPageイベント内ではフォーム上やピクチャボックス内で描画する方法とほぼ同じです。
データのテキストは実際には配列に作成しておくといいでしょう。但し、イベントはページ単位で起きるので、今何行目を表示しているのかを覚えておく必要があります。
| |
1: Imports System.Drawing.Printing
2:
3: Public Class Form1 Inherits Form
4:
5: Private WithEvents Button1 As Button
6: Private WithEvents PrintDocument1 As PrintDocument
7:
8: Public Sub New()
9: MyBase.New()
10: Me.Button1 = New Button() ‘ ボタン生成
11: Me.Button1.Text = "印刷"
12: Me.Controls.Add(Me.Button1)
13: Me.PrintDocument1 = New PrintDocument()
14: End Sub ‘ 印刷ドキュメント生成
15:
16: Private Sub Button1_Click( … ) Handles Button1.Click
17: PrintDocument1.Print() ‘ 印刷の指示
18: End Sub
19:
20: Private Sub PrintDocument1_PrintPage(ByVal sender As Object, _
ByVal e As PrintPageEventArgs) _
Handles PrintDocument1.PrintPage
21: Dim g As Graphics = e.Graphics
22: g.DrawString("プリントテスト", New Font("Arial", 10), Brushes.Black, _
e.MarginBounds.Left, e.MarginBounds.Top, New StringFormat())
23: End Sub
24: End Class
|
|
| 大枠の処理の記述 |
5行目 :ボタンの定義(WithEvent修飾子でこのオブジェクトにはイベント処理があることを示す。)
6行目 :PrintDocumentの定義(WithEvent修飾子でこのオブジェクトにはイベント処理があることを示す。)
8-14行目 :コンストラクタ
9行目 :親(Button)のコンストラクタを実行
10行目 :ボタンの生成
12行目 :ボタンをフォーム(Me)のコントロールとして登録
13行目 :PrintDocument(印刷ドキュメント)の生成
16-18行目:ボタンクリック(Click)イベントのイベントハンドラ
17行目 :印刷を行うようにデリゲートに指示
20-23行目:印刷ページ(PrintPage)イベントのイベントハンドラ
Handles句で、印刷を行うようにデリゲートに指示が発生したら、このイベントハンドラを
実行するように依頼(静的)
21行目 :イベント情報からグラフィックオブジェクトを取得
22行目 :グラフィックオブジェクトで文字列を描画(印刷)
(印刷行のテキスト文字列、フォント、ブラシ、x座標、y座標、書式属性)
- イベント情報
PrintPageイベント内では引数の PrintPageEventArgsオブジェクトに印刷の為に必要な情報が詰め込まれています。(System.Drawing.Printing)
ここに主要なプロパティ情報を示します。
| No. |
プロパティ |
設定内容 |
| 1 |
Cancel |
印刷ジョブをキャンセルするかどうかを示す値を取得または設定します。
キャンセルする(True)、キャンセルしない(False) |
| 2 |
Graphics |
ページの描画に使用される Graphics を取得します。 |
| 3 |
HasMorePages |
追加のページを印刷するかどうかを示す値を取得または設定します。
追加あり(True)、追加なし(False) |
| 4 |
MarginBounds |
ページ余白の内側の部分を表す四角形領域を取得します。(Rectangle) |
| 5 |
PageBounds |
ページの全領域を表す四角形領域を取得します。(Rectangle) |
| 6 |
PageSettings |
現在のページのページ設定を取得します。(PageSettings) |
|
|
| |
 |
|
INDEX |
| |
連載 Visual Basic 新しい印刷モデルの利用方法 |
 |
1.印刷方法 |
| |
2.印刷のダイアログ |
 |
|