|
●はじめに ●プリンタ設定ダイアログ、ドキュメントオブジェクト それぞれ、.NETコンポーネントなので、適当なフォームに貼り付けて使用する。互いに関連付けておく必要がある。 pdgMはプリンタ設定ダイアログ、pdcMはドキュメントオブジェクト pdgM.Document = pdcM '関連付けておく ここで設定された各種パラメータは、PrinterSettings.DefaultPageSettings であり、それ以降の共通の設定となる。 プリンタ設定ダイアログで、ユーザがキャンセル(中止)を選択した場合は、プリンタ設定ダイアログの戻り値で以下のように判明する。これは、WindowsDialog 共通である。 Select Case pdgM.ShowDialog() ●印刷開始 印刷開始は、Printメソッドである。 pdcM.DocumentName = "適当な名称" '印刷JOBに表示される ●印刷に関するイベント ドキュメントオブジェクト(PrintDocument) から、以下の4つのイベントが生起される。 ○BeginPrint Printメソッドに対して一回だけ最初に発生する。ここで印刷のキャンセルができる。 e.Cancel = True ○QueryPageSettings 各ページ印刷の開始前に発生する。もし、ページ毎にページ設定を変更したければここで行う。印刷のキャンセルも行える。 e.PageSettings.XXXXXX = YYYYYY など。DefaultPageSettings には影響しない。 ○PrintPage 各ページ印刷の開始前に発生する。ここでも、ページ設定の変更はできるが、そのページは変わらなく、次のページから反映されるので、余り意味がない。QueryPageSettings にて変更すべきである。 描画すべきGraphics が提供されるので、ここでそのGraphics に実際の印刷内容を描画する。 Dim g As Graphics =
e.Graphics e.HasMorePages = False 'Falseで印刷頁終了となる 。 True とすれば、次のページ印刷に入り、QueryPageSettings が再び発生する。 ○EndPrint HasMorePage = False の場合、最後のページが完了した時発生する。 ●印刷と解像度 VB.NET では、プログラマに負担を掛けないよう、解像度と印刷サイズは自動変換される。何も設定しないで、普段通り描画すれば、
結局、印刷では、1/100インチ単位で考えれば最も簡便になる。 ●印刷プリビューダイアログ ドキュメントオブジェクトで設定された状態で印刷内容をシミューレーションし表示するもの。ページ切り替え、印刷などの制御もできる。シミュレーションは全自動なのでわざわざ描画する必要はない。実際には、ドキュメントオブジェクトのPrintPageイベント処理をフェッチし、プリンタの代わりに自分自身に描画するようになっている。印刷サイズは用紙サイズに対して相対的に完全に維持される。 prvT を印刷プリビューダイアログ、pdcT をドキュメントオブジェクトとすれば、基本的に、 prvT.Document = pdcT で、印刷内容をプリビューできる。当然、pdcT に対する印刷(描画)処理ルーティンがあるのもとする。これは非常に便利なダイアログである。 表示位置などの制御もできる。 複数ページの印刷では、その制御方法を考慮しないといけない。なぜなら、印刷プリビューダイアログにてイベント処理が実行されるので、本印刷時、特に、印刷プリビューダイアログからの印刷指示時、ページ制御がリセットされるように考慮する。このためには、BeginPrint イベントにて複数ページ印刷の初期設定を行う。 印刷プリビューダイアログでのプリビューは、常に印刷と同じ処理が行われる。そのため、画像の高精細印刷などでは、ビットマップ処理が非常に重くなる。しかし、プリビューでは精々モニタの解像度なので、原画としては 1000X1000 程度で十分となる。必ず、プレビューを行うフローであれば、プレビュー時は軽い原画で行わせるなどすれば、高速化が図れる。 印刷プリビューコントロールもある。これは、UI が全くなく、自分のフォームの中にプリビュー窓を組み込む場合などに利用する。 ●プリンタ設定ダイアログなしでの設定 プリンタ設定ダイアログなしでも印刷パラメータの設定は可能、またドキュメントオブジェクトもコントーロールを使用しないで直接オブジェクトを生成し、イベントハンドラを設定できる。 しかし、最近のプリンタは複雑になっており、細かで高度な設定ができるようになっている。この場合は、メーカ提供の設定ダイアログでないと設定できないので、結局、プリンタ設定ダイアログ→メーカ設定ダイログと言う方法が良い。
|