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

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

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

Re[2]: PictureBoxの印刷出力に関して


(過去ログ 22 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■9526 / inTopicNo.1)  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)------------------------------------------------------------------------------------------------------------------


引用返信 編集キー/
■9531 / inTopicNo.2)  Re[1]: PictureBoxの印刷出力に関して
□投稿者/ 魔界の仮面弁士 (497回)-(2007/10/30(Tue) 09:01:07)
No9526 (ラーメン太郎 さん) に返信
> 問題点 (1) Propertyにより、型"System.Drawing.Printing.PrintPageEventArgs"の変数をフォームからクラスに渡しているが、それがうまくいかない。
>       DrawLine等のメソッドが認識されない。

そのオブジェクトの有効期間は、PrintPage イベントの発生中だけですが、その点は大丈夫ですか?



> フォーム上でのイベント処理
> e.Graphics.DrawLine(P1, 10, 100, 410, 600)
> ↑ここではDrawLineは使用できる
>
> クラスでの描画処理(メンバではないと怒られます。。)
> ↓
> m_Pobjct.DrawLine(P1, 10, 100, 410, 600)

フォーム処理の時には、「オブジェクト.Graphics.DrawLine(〜)」を使っているのに、
クラスで処理する際に、「オブジェクト.DrawLine(〜)」になっていますよね。

その使い方をするのであれば、渡すのは PrintPageEventArgs ではなく、Graphics クラスの方かと。
引用返信 編集キー/
■9578 / inTopicNo.3)  Re[2]: PictureBoxの印刷出力に関して
□投稿者/ ラーメン太郎 (5回)-(2007/10/31(Wed) 10:25:56)
No9531 (魔界の仮面弁士 さん) に返信
> ■No9526 (ラーメン太郎 さん) に返信
> そのオブジェクトの有効期間は、PrintPage イベントの発生中だけですが、その点は大丈夫ですか?
印刷ボタン実施時に、PrintPage イベントがページ数分発生すればよいので、問題ないかと。
あまり質問の意味がわかっていないかもですが。。


> フォーム処理の時には、「オブジェクト.Graphics.DrawLine(〜)」を使っているのに、
> クラスで処理する際に、「オブジェクト.DrawLine(〜)」になっていますよね。
>
> その使い方をするのであれば、渡すのは PrintPageEventArgs ではなく、Graphics クラスの方かと。
すいません、ケアレスミスです。

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -