以下の手順で行い印刷プレビュー win32c++?
-
19-09-2019 - |
質問
して描画機能するばかHDC.も必要なものは、正確なスケーリングバージョンのまま印刷できます。
なので現在使用してい CreateCompatibleDC()プリンタHDCと CreateCompatibleBitmap()とプリンターのHDC.
でもけっこうそうすることによって、DCのプリンターの正確な幅と高さです。やってフォントを選択しこのHDCのテキストのスケールとして、プリンタにするパラメータである。
残念ながらできるようになるStretchBlt()にコピーするこHDCのピクセルをコントロールのHDCそれらの異なるHDCの種類によるものだと考えられます。
の場合のような"メモリキャンバス"からウィンドウHDC同w、hとしてプリンターのページ のフォントは出ていう気遣いうスケールの画面はオススメはできません。
うCreateCompatibleDC()からのウィンドウのDCおよび CreateCompatibleBitmap()プリンタからの直流又は何か??
自分がその気にさえなればいを説明できるのではないかと思います。(といっているプリンタ...
もっと幸いです。
スティーブ...
解決
り方によっては正確なりたいときのこで難しい。
多くのアプローチ。いるように聞こえるように描くプリンターサイズのビットマップを縮小します。次いであって、次に掲げるもの
- をDC(しみいただけるよう、IC-情報コンテキストのために、カラー印刷はできません。
- クエリーのプリンタのDCへの分解能イメージの物理-オフセット等
- を直流のためのウィンドウの画面になります。
- の作成に対応DCのメモリDC).
- を対応ビットマップウィンドウのウィンドウ画面のサイズをピクセルサイズのプリンタのページです。(このアプローチがここには巨大なビットマップで失敗します。)
- を選択の対応ビットマップを記憶している。
- 絵を描くのメモリのDCを使用し、同じ座標を使う場合は図面に実際のプリントします。(ときにフォントを選択してください規模のプリンタの論理インチの画面の論理インチです。)
StretchBlt
メモリDCのウィンドウには、規模の全体イメージです。するために実験を伸ばすモードをどう作品にどのようなイメージで表示されます。- リリースの全ての資源です。
その前にする方向を考える。このアプローチを配巨大な画面上のビットマップ.これに失敗する資源の乏しい。もっていることを確認してくださいされることもありますので、飢餓その他のアプリとなります。
コンボ-ファイルは実行ファイルアプローチされても答えは良い選択肢多くのアプリケーションに今始まります。
もう一つのアプローチしていくサイズはすべて一部の架空の高分解能ユニットです。例えば、いまは1000thsのインチです。して描画ルーチンが大きく架空のユニットは、実際にdpiにあります。
この最終アプローチ(およびそのメタファイル)はGDIフォントな規模の完全偏.の幅は、個々の文字を調整によっては対象。高解像度のデバイス(300+dpiレーザープリンターは、この調整は軽微であります。が96dpiの画面にインポート可能で重大なエラーの長さのライン。でのテキストにプレビューウィンドウが表示され、の割合(一般的に広く)として知られ、印刷されたページです。
このように、ハードコアプローチが計測中のテキストプリンタコンテキストの測定の画面でコンテキスト調整用の乖離.例えば利用したアップ数)が測定の幅に一部の文字をプリンタのコンテキストで900プリンター(ピクセル単位)で作成します。その比率はプリンタのピクセルの画面ピクセルが3:1.いて、同じテキスト、画面上300画面ピクセル幅である。でも測定の画面でコンテキストを取得すような値325画面ピクセルです。を描く際には、画面かできない何らかのテキスト25ピクセルがりはない。できramの文字として選択するよりも小さいフォントを伸ばしんで頂きたいと思います。
のハードコアプローチはより複雑になります。すが、例えば、検出するフォントの置換によるプリンタドライバーをマッチさせていくというときにご利用画面している。
おいしいハイブリッドのビッグビットマップのハードコアプローチ。の代わりに巨大なビットマップのページで、くっつるのに十分な大きさザインページの上にレイアウトします。その描きでプリンターサイズのオフスクリーンやビットマップ StretchBlt
で画面サイズとなります。このサイズの違いは若干劣化のフォント。するのに適して実際に印刷プレビューですがなにしたいとのWYSIWYGエディタをするようです。一ビットマップが十分小さいこと。
良いニュースは、テキストだけでは完結しました。他のすべての図面の簡単なスケーリングの座標およびサイズです。
私は使用しないGDI+いいと思うのでなく非線形フォントをスケーリングといいます。で使用している場合は、GDI+を使う方法で規模を縮小しなお座標です。の欠点であるとは思わないフォントの品質GDI+はど地域の見所があります。
そして、たばかりのネイティブアプリケーションVista以降でくださいんだ付工程として"DPI対".その場合、ユーザーは高DPI画面でウィンドウが嘘をつき、請求項の解像度は96dpiはそのファジープスケーリングを重ねていきます。この劣化、視覚のクオリティを高め、できるデバッグの印刷プレビューでもが複雑化してきております。以降で多くのプログラムではなく適応で高DPI画面、Microsoft追加"高解像度スケーリング"によるデフォルトの起動にVista.
編集追加
他の点に注意:を選択した場合、HFONTのメモリDCのプリンターサイズのビットマップで 可能 いただく異なるフォントいれて持ち歩いてみてはいかを選択するHFONT、実際のプリンタで行けます。それをプリンタドライバーに代わる一般的フォントとメモリです。例えば、PostScriptプリンターを代替の内部のPostScriptフォントのために一定の共通のTrueTypeフォント.
できる最初の選択HFONTプリンタにICを使用し、GDI機能 GetTextFace
, GetTextMetrics
, ね GetOutlineTextMetrics
すぐに実際のフォントを選択します。それでは、新規にLOGFONTしてみるとわかるプリンタも利用して、HFONTを選択しそれを記憶している。このマークは本当に実装されます。
他のヒント
試みる価値があるかもしれないことの一つは、拡張メタファイルDCを作成して通常どおりに描画し、プリンタメトリックを使用して、このメタファイルをスケーリングすることです。これは WTL のBmpViewサンプルで使用されるアプローチである - 私はこれがものになるかどうか、正確かわかりません(それはとても利用価値があるかもしれませんWin32プログラミングのための素晴らしい代替品ですが、Win32のWTLに関連するクラスのポートに簡単にする必要があります。)
を見て価値があるかもしれませんさてあなたは、プリンタDCでより高い解像度を持っているので、それは同じように見えるしませんので、あなたはある種の変換関数を記述する必要があります。私はあなたが動作するようになったが、テキストが小さすぎたとただソースウィンドウ幅でプリンタウィンドウ幅と除算によってすべての位置/フォントサイズを掛ける方法で行くと思います。