dポイントプレゼントキャンペーン実施中!

C# 印刷可能領域と余白範囲の関係?
プリンタで印刷出来る最大画像を出力したい
そこで余白範囲を印刷可能範囲まで拡大した
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
MessageBox.Show("余白範囲 変更前" + "\r\n" +
" left " + e.MarginBounds.Left + "\r\n" +
" right " + e.MarginBounds.Right + "\r\n" +
" width " + e.MarginBounds.Width + "\r\n" +
" top " + e.MarginBounds.Top + "\r\n" +
" bottom " + e.MarginBounds.Bottom + "\r\n" +
" height " + e.MarginBounds.Height + "\r\n");
   余白範囲を印刷可能範囲まで拡大
e.PageSettings.Margins.Left = (int) e.Graphics.VisibleClipBounds.Left;
e.PageSettings.Margins.Right = (int)e.Graphics.VisibleClipBounds.Right;
e.PageSettings.Margins.Top = (int)e.Graphics.VisibleClipBounds.Top;
e.PageSettings.Margins.Bottom = (int)e.Graphics.VisibleClipBounds.Bottom;
   このようにしても前後のメッセージの値は同一でした
MessageBox.Show("余白範囲内 変更後" + "\r\n" +
" left " + e.MarginBounds.Left + "\r\n" +
" right " + e.MarginBounds.Right + "\r\n" +
" width " + e.MarginBounds.Width + "\r\n" +
" top " + e.MarginBounds.Top + "\r\n" +
" bottom " + e.MarginBounds.Bottom + "\r\n" +
" height " + e.MarginBounds.Height + "\r\n");
}
どうやら余白範囲はReadOnlyらしい
そこで疑問???
(1)余白範囲を超えても印刷可能範囲ならば、全てのプリンタで画像がチョン切れることはないのだろうか?
(2)そうならば余白範囲は何のためにあるのでしょうか? その存在目的は?
毎日印刷テストを繰り返し、無駄なインクと紙を浪費している私と『 母なる地球 』をお救いください!!!

A 回答 (1件)

private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)


{}

まず、これは印刷を開始後に発生するイベント
ですよね
いわば、印刷中であるといえるでしょう
印刷中に、プログラムが余白を設定する意味は無いので
ReadOnly なのでは無いでしょうか


分かりやすく書くと、EXCELを思い浮かべてください
印刷前にプレビュー等をだして余白を設定しますよね
その後、印刷を行うと
1ページ目も2ページ目もすべて、同じ余白の中に印刷されます。

なので、余白の設定は、
[プリンタドキュメント].Print(); を行う前
[プリンタドキュメント].DefaultPageSettings.Margins で設定して

printDocument1_PrintPage(~略~)
内では、その設定された範囲で印刷を行う

と、すべて同じ余白で印刷されます
って意味だと思います。
    • good
    • 0
この回答へのお礼

良く理解出来ました
ありがとうございました
お陰で助かりました
これからも宜しくお願い申上げます

お礼日時:2010/09/27 20:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!