PrintDocument1.OriginAtMarginsとe.Graphics.ResetTransformの関係
- 題名: PrintDocument1.OriginAtMarginsとe.Graphics.ResetTransformの関係
- 著者: koha
- 日時: 2011/10/19 20:53:38
- ID: 29268
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: PrintDocument1.OriginAtMarginsとe.Graphics.ResetTransformの関係
- 著者: shu
- 日時: 2011/10/19 22:05:04
- ID: 29269
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: PrintDocument1.OriginAtMarginsとe.Graphics.ResetTransformの関係
- 著者: koha
- 日時: 2011/10/20 20:46:31
- ID: 29272
- この記事の返信元:
- この記事への返信:
- ツリーを表示
■開発環境:VB2010
■現象
X座標は同じ2線分を描画しているが、X座標が横方向にずれます。
@PrintDocument1.OriginAtMargins = Falseにすれば、現象が発生しない。
APrintDocument1.OriginAtMargins = Trueでも、
e.Graphics.ResetTransform()がコメントなら現象が発生しない。
ハード余白が無効になっているように気がしますが、
対応策はあるでしょうか?
■以下、ソース
'Button、PrintPreviewDialog、PrintDocumentを張り付ける
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
PrintDocument1.OriginAtMargins = True '<−−−
PrintPreviewDialog1.Document = PrintDocument1
PrintPreviewDialog1.ShowDialog()
End Sub
Private Sub PrintDocument1_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
Dim x1, y1, x2, y2 As Integer
x1 = 100
y1 = 50
x2 = 100
y2 = 200
e.Graphics.DrawLine(Pens.Black, x1, y1, x2, y2)
e.Graphics.ResetTransform() '<−−−
x1 = 100
y1 = 300
x2 = 100
y2 = 400
e.Graphics.DrawLine(Pens.Red, x1, y1, x2, y2)
End Sub