0

サンプルスポットの長方形配列を含むスライドの概要を表示するために、「印刷プレビュー」機能に取り組んでいます。

スライドのサイズは通常25x75 mmで、スポットサンプルの直径は通常0.1mmです。通常、スライドの周囲にはスポットが印刷されていない2mmのギャップがあります。

スポット(ピッチ)間の距離は0.01mmまで正確です。たとえば、0.20mmと0.29mmのピッチは、ピクセルで区別する必要があります。スポット自体を表す場合、スポットが表示され、重ならない限り、この段階では100%の精度はおそらく重要ではありません。

スライド/スポットのビットマップ表現を作成し、任意の倍率でスライドレイアウトを表示するために、どのような手法を使用するかについてアドバイスをいただければ幸いです。

これは洗練されている必要はありません。1:1の表現に加えて、最初は拡大率を小さくしたり大きくしたりします。スポットが小さくなりすぎて表現できないので、ズームアウトしすぎることはできないでしょう。

拡大率を大きくするには、水平/垂直スクロールコントロールの実装についても知っておく必要がありますが、これについては後で説明します。

ズーム機能を適切に実装するために知っておくべきプログラミングとスケーリングのテクニックについて知りたいと思います。最近、StretchBlt関数を使って画像サイズを変更してみましたが、問題はないようですが、その他の関連情報があれば便利です。

乾杯。

4

1 に答える 1

1

最初から始めましょう:

  • ::AFXPrintPreview() と MFC のその他の印刷プレビュー機能を使用しないのはなぜですか?

  • 「スライド」と「スポット」はあなたの業界に固有のものだと思います。それらは質問に関連していますか、それとも説明のためだけですか?

  • StretchBlt() は、ピクセルレベルの「ズーム」しかできないため、あまり役に立ちません。必要なのは、コントロールの特定の部分をより高いレベルの精度で描画することです。MFC の印刷プレビュー機能を使用しない場合でも、それを見て、どのように実行できるかを確認してください。

  • Windows コントロールには、スクロールとスケーリングに必要なすべての機能があります。これらはデバイス コンテキストにあります: SetWindowExt()、SetViewportExt()、SetViewportOrg() など。MSDN の「CDC メンバー」ページの「座標関数」を参照してください。そうは言っても、スクロールバーの位置を追跡したり、コントロールのズームコマンドなどを使用して、ズームとスクロールを「手動で」実装したことがあります。ただし、どちらも使いやすいわけではないので、そもそも自分でもっとうまくできると思っていたのですが、間違っていたことがわかりました:)

  • 最後に、あなたの質問からは、あなたが本当にそのボートに乗っているかどうかはわかりませんが、物理的な距離 (ミリメートルなど) で考えないでください。最初に正しく行う必要があるのは、要素間の比率が適切になるように、図形を画面に描画することです。次に、ズームイン/ズームアウトします。最後に、物理的な対策が機能するのは、印刷部分に到達したときだけです。ここで把握する必要があるのは (ここでは少し単純化しています) 唯一のことは、「必要な出力を得るために必要な正しいズーム率はどれくらいか」ということです。これは少しトリッキーですが、質問の最初の部分 (コンポーネントを画面に描画する方法) とはほとんど関係がありません。

問題が発生した場合は、遠慮なく具体的​​な質問を投稿してください。ここでは、印刷プロセスの「一般的な」部分の例として、印刷プレビューと印刷コードを示しますが、詳細はアプリケーションごとに明らかに異なります。

于 2009-04-23T11:49:57.897 に答える