|
分類:[VB.NET/VB2005]
お絵書き(線、文字)を行ったPictureBoxの内容を印刷する処理を実現したいのですが、方法が分かりません。下記2つの手段で模索しています。 私は手段2を実現したいのですが、よろしくお願い致します。
<手段1> 下記※1の方法でPictureBoxを取り込み、印刷を実施。
問題点 (1)文字・線等々がぼやけてクリアでない。 (2)PictureBoxにラベルを貼り付けている為、それが反映されない。
<手段2> 下記※2の方法で、お絵書き(線、文字)を行ったPictureBoxを印刷に使用するのではなく、再度印刷用に描画を行う。 描画処理自体はクラスで行っている。
問題点 (1) Propertyにより、型"System.Drawing.Printing.PrintPageEventArgs"の変数をフォームからクラスに渡しているが、それがうまくいかない。 DrawLine等のメソッドが認識されない。
(※1)------------------------------------------------------------------------------------------------------------------ Private Sub PagePrintBtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PagePrintBtn.Click
'PrintDocumentオブジェクトの作成() Dim pd As New System.Drawing.Printing.PrintDocument 'PrintPageイベントハンドラの追加 'AddHandler pd.PrintPage, AddressOf pd_PrintPage '印刷を開始する() 'pd.Print()
End Sub
Private Sub pd_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs)
Dim img As Image '画像を読み込む img = New Bitmap(picMain.Image)
'画像を描画する e.Graphics.DrawImage(img, e.MarginBounds) '次のページがないことを通知する e.HasMorePages = False
'後始末をする img.Dispose()
End Sub (※1)------------------------------------------------------------------------------------------------------------------
(※2)------------------------------------------------------------------------------------------------------------------
フォーム上でのイベント処理 Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage ↑こいつをクラスに渡す e.Graphics.DrawLine(P1, 10, 100, 410, 600) ↑ここではDrawLineは使用できる End Sub
クラスでのプロパティセット ↓ Public Property SetPrintobj() As System.Drawing.Printing.PrintPageEventArgs
Get Return m_Pobjct End Get
Set(ByVal value As System.Drawing.Printing.PrintPageEventArgs) m_Pobjct = value End Set
End Property
クラスでの描画処理(メンバではないと怒られます。。) ↓ m_Pobjct.DrawLine(P1, 10, 100, 410, 600)
(※2)------------------------------------------------------------------------------------------------------------------
|