印刷の設定についてお教えください への返答

投稿で使用できる特殊コードの説明。(別タブで開きます。)
本名は入力しないようにしましょう。
投稿した後で削除するときに使うパスワードです。返答があった後は削除できません。
返答する人が目安にします。相手が小学生か社会人かで返答の仕方も変わります。
最初の投稿が質問の場合、質問者が解決時にチェックしてください。(以降も追加書き込み・返信は可能です。)
※「過去ログ」について書くときはその過去ログのURLも書いてください。

以下の返答は逆順(新しい順)に並んでいます。

投稿者 大池  (社会人) 投稿日時 2011/9/24 15:36:23
shu 様
早速のご指導ありがとうございます。

>> PrintDocument1.DefaultPageSettings.Margins = New Printing.Margins(0, 0, 0, 0)
> そもそも余白が0に出来ないプリンタは多いので多分無理でしょう。
> プリンタ固有の設定はDEVMODE構造体などを使わないと駄目です。

ああ!!そうなんですか・・・残念無念
ただ本講座 35 印刷 5.余白 の後半で、但し書きがあるもののこの命令でプリンターの物理的な限界が(0,0)になるものと思っていました。そうすれば所定用紙に印刷する場合、常にこれを基準に印刷位置を決めることが出来ると期待していました。間違って理解していたようです。

ありがとうございます。
今後ともよろしくお願いいたします。
投稿者 shu  (社会人) 投稿日時 2011/9/24 14:14:36
> g.DrawString(msg, myFont, myBrush, 0, 0)
この書き方だと余白が考慮されません。
e.MarginBounds
を使って
g.DrawString(msg, myFont, myBrush,e.MarginBounds.Left, e.MarginBounds.Top)
とした方がよいです。


> PrintDocument1.DefaultPageSettings.Margins = New Printing.Margins(0, 0, 0, 0)
そもそも余白が0に出来ないプリンタは多いので多分無理でしょう。



プリンタ固有の設定はDEVMODE構造体などを使わないと駄目です。
投稿者 大池  (社会人) 投稿日時 2011/9/24 10:18:16
いつもお教えを乞うばかりで恐縮です。
XPでVB2008を勉強しています。
厚かましいお願いですが、プリンター(Canon MP600)の設定について2点お教えください。

1.余白の変更について
プリンター付属のダイアログで余白(3mm)を設定し、これをプログラム上で変更(余白なし)するために次のようにしたのですが、反映されません。これはどのようにすればいいのでしょうか?

Private Sub PrintDocument1_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
         
    Dim msg As String = "余白のテスト"
        Dim myFont As Font = New Font("MS ゴシック", 14, FontStyle.Bold)
        Dim myBrush As Brush = Brushes.Brown

        Dim g As Graphics = e.Graphics
        g.DrawString(msg, myFont, myBrush, 0, 0)
        e.HasMorePages = False

End Sub

Private Sub btnPrint_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnPrint.Click

        PrintDocument1.DefaultPageSettings.Margins = New Printing.Margins(0, 0, 0, 0)
        PrintDocument1.Print()

End Sub

2 両面印刷の解除
大変重宝な機能なんですが、これをプログラムで解除するにはどのようにすればいいのでしょうか?

以上よろしくお願いいたします。