印刷の設定についてお教えください への返答
投稿で使用できる特殊コードの説明。(別タブで開きます。)
以下の返答は逆順(新しい順)に並んでいます。
投稿者 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構造体などを使わないと駄目です。
この書き方だと余白が考慮されません。
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 両面印刷の解除
大変重宝な機能なんですが、これをプログラムで解除するにはどのようにすればいいのでしょうか?
以上よろしくお願いいたします。
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 両面印刷の解除
大変重宝な機能なんですが、これをプログラムで解除するにはどのようにすればいいのでしょうか?
以上よろしくお願いいたします。
早速のご指導ありがとうございます。
>> PrintDocument1.DefaultPageSettings.Margins = New Printing.Margins(0, 0, 0, 0)
> そもそも余白が0に出来ないプリンタは多いので多分無理でしょう。
> プリンタ固有の設定はDEVMODE構造体などを使わないと駄目です。
ああ!!そうなんですか・・・残念無念
ただ本講座 35 印刷 5.余白 の後半で、但し書きがあるもののこの命令でプリンターの物理的な限界が(0,0)になるものと思っていました。そうすれば所定用紙に印刷する場合、常にこれを基準に印刷位置を決めることが出来ると期待していました。間違って理解していたようです。
ありがとうございます。
今後ともよろしくお願いいたします。