C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 22 を表示中)
■9526 / )  PictureBoxの印刷出力に関して
□投稿者/ ラーメン太郎 (4回)-(2007/10/29(Mon) 21:47:14)

分類:[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)------------------------------------------------------------------------------------------------------------------


返信 編集キー/


管理者用

- Child Tree -