1

メインパネルがFlowLayoutPanelであり、まさに印刷したいフォームがあります(適切にフォーマットされたドキュメントのように設計されています...ボタンなどはありません...コマンドを右クリックします)。

したがって、私は DrawToBitmap を利用して、ほぼ無料で印刷を実装しています...メインパネルがユーザーが印刷したい用紙のサイズ (余白を差し引いたもの) になるように Form のサイズを変更するだけで、自動的にそのサイズの内容を適切に流します。次に、DrawToBitmap を使用して、その FlowLayoutPanel とそのすべてのコンテンツを印刷ページにレンダリングします。ウィンドウをページ サイズ (縦横比は同じ) よりも大きくし、DrawToBitmap から取得したビットマップを縮小することで、サイズを調整することもできます。よく働く...

ただし、画面がページサイズよりも大きい場合にのみ機能します! 画面のサイズ + 12 ピクセルよりも大きいフォームまたはコントロールのサイズを変更しようとすると、いずれかの方向が妨げられるためです。

うーん!画面よりも大きいサイズに変更することを拒否することで、DrawToBitmap の適用性を無効にするつもりなら、DrawToBitmap の単純さと有用性について私をからかう必要はありません。(修辞的な)

私の質問:

その制限を回避し、フォームまたは FlowLayoutPanel を画面よりも大きくサイズ変更する方法はありますか?

そうでない場合、印刷されたページに合わせてサイズを変更し、DrawToBitmap を呼び出すことができるように、FlowLayoutPanel のスクロールされた表面 (スクロールされた部分だけでなく) に到達する方法はありますか?

そうでない場合、既存のレイアウト機能を利用して印刷する他の方法はありますか? または、画面が印刷されたページよりも大きい場合に既に生成されるのと同じビットマップを生成するためだけに、基本的にそのすべての WinForms コードを書き直して立ち往生していますか??

4

1 に答える 1

0

よくわかりませんが、これをすべて仮想的に行うことは可能でしょうか。いいえ:

Dim FLP as FlowLayoutPanel = Form1.FlowLayoutPanel1
For Each flp_subobject as Object in FlowLayoutPanel.Children
    FLP.Children.Add(flp_subobject)
Next
FLP.Height = MASSIVEHEIGHT
FLP.Width = MASSIVEWIDTH
DrawToBitmapFunction(FLP)

それが私が行う方法であり、画面の制限を超えることなどに関して多くの経験があるわけではありません。その場で頭から真っ直ぐ出てきたので、これがどうなるか教えてください:D

于 2012-12-18T10:46:26.917 に答える