C3Lab研究室

Back to Title Page(OpenLab)タイトルページへ戻る

最終更新日: 1999年 03月 19日 金曜日

*WYSIWYGな印刷の為に

WYSIWYGな印刷を行うための基礎知識

 WYSIWYG(What You see is What You get)な 印刷を行うことはDTPでは非常に重要なことですがそれらのソフトウェアは非常に高価 です。
 MACではよく使われているC**R**は簡単に比較的よく動作するアプリケーション ですが、フォントの混在等によるずれが非常に大きく見た目と実際の印刷にかなりのずれが 生じることが少なくありません。これらの原因はどこにあるのでしょう?!
 それは、基本としてアプリケーションが表示するオブジェクトの表示管理の問題だと思わ れます。

 複数のテキストなどを表示する場合、TextOut関数やBitBltなどで順次デバイスコンテキ ストへ描画していきますが、そのデバイスコンテキストの領域などがプリンターとディス プレイで異なるために画面重視で作成されたアプリケーションではプリンターデバイス コンテキストへの出力では通常拡大処理を行うことになります(プリンターデバイスコン テキストの方がPIXEL単位で広いことが多いため)。また、DPI(解像度)の差に よる個別のプリンターやデバイスドライバーの差もあります。
 そうした差をできる限り少なくし、プリンターでの印刷と表示の差を少なくするには どうすればよいのでしょうか?
 解決法の一つは、プリンターへの出力イメージをバックグラウンドで処理し、印字 イメージをそのままディスプレイへ出力することです。そのためには以下のような方法 でアプリケーションを作成してみてはいかがでしょうか?

 デフォルトプリンター設定からプリンターの印字可能なサイズを修得し、 バックグラウンド画像処理の領域を求める
 ディスプレイデバイスコンテキスト互換ビットマップをバックグラウンド 処理領域で生成する
 描画処理は通常バックグラウンドビットマップに対して行う。
 WM_PAINT 処理はバックグラウンドビットマップをデバイスコンテキストに BitBltすることで行う。

Copyright (C) Kitaro 1999