DOBON.NET DOBON.NETプログラミング掲示板過去ログ

印刷余白の設定方法

環境/言語:[WindowsXP, VB.NET, .NetFramework1.1]
分類:[.NET]

いつもお世話になっております。

印刷時に用紙の余白設定を行っておりますが、意図する余白で印刷されません。
以下のようにコード内で余白の設定を行っておりますが、反映されません。
[PageSettings.Margins プロパティ]のヘルプのようにしているつもりですが、
うまくいくません。

よろしくお願いします。

----------------------------------------
Private Sub Button1_Click ...

  Dim mrgMargins As New System.Drawing.Printing.Margins(100, 100, 100, 100)

  ' 用紙余白設定
  PrintDocument1.DefaultPageSettings.Margins = mrgMargins
  ' ドキュメントの印刷プロセスを開始
  PrintDocument1.Print()

End Sub

Private Sub PrintDocument1_PrintPage ...

  e.Graphics.DrawString("余白テスト", New Font("MS ゴシック", 10), _
             Brushes.Black, 0, 0)

End Sub
----------------------------------------
> 印刷時に用紙の余白設定を行っておりますが、意図する余白で印刷されません。
> 以下のようにコード内で余白の設定を行っておりますが、反映されません。
> [PageSettings.Margins プロパティ]のヘルプのようにしているつもりですが、
> うまくいくません。

肝心なのは、PrintDocument.PrintPageイベントハンドラでどのように描画しているかです。PrintPageEventArgs.MarginBoundsの範囲内に描画するようにしていますか?
> 肝心なのは、PrintDocument.PrintPageイベントハンドラでどのように描画しているかです。PrintPageEventArgs.MarginBoundsの範囲内に描画するようにしていますか?

用紙の余白を(左:1インチ、上:1インチ)と設定して、左上座標(0,0)に
文字を印刷すると、用紙の左上(1,1)インチの場所に印刷されるものだと
考えておりました。

とりあえず、余白については考えずに用紙の左上(1,1)センチに文字を
印刷するようにしてみたところ、きちんと出力されました。
PrintDocument.PrintPageイベントハンドラのPrintPageEventArgs.MarginBoundsを
見たところ、
MarginBounds.Left=100,MarginBounds.Top=100
となっておりました。
用紙余白が左上(1,1)インチで、余白範囲外の用紙左上(1,1)センチに文字出力が
できたことを考えると、印刷する際に余白は考慮しなくても良さよう(?)かなと
思っております。

文字印刷する時のMarginBoundsは意味を持たないんでしょうか?
> 文字印刷する時のMarginBoundsは意味を持たないんでしょうか?

私が考えるに、MarginBoundsはどのような設定で印刷しようとしているかを示しており、描画するときにこの範囲に収まるようにするということだと思います。マージンの設定を無視するなら必要ないといえるかもしれませんね。
>>文字印刷する時のMarginBoundsは意味を持たないんでしょうか?
>
> 私が考えるに、MarginBoundsはどのような設定で印刷しようとしているかを示しており、描画するときにこの範囲に収まるようにするということだと思います。マージンの設定を無視するなら必要ないといえるかもしれませんね。

ご回答ありがとうございます。

現段階では、用紙余白を考えず意図する座標に印字できているので良しとします。
貴重なご意見を頂きありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板