DOBON.NET DOBON.NETプログラミング掲示板過去ログ

すべて印刷したい

環境/言語:[WIN2000]
分類:[.NET]


↓のサンプルは、画像ファイルの印刷ができます。
但し、一頁の印刷しかできないです。
もし、ファイルは多数ページのTIFの場合は、書き方を教えてください。
よろしく。


[VB.NET]
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.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 = Image.FromFile("test.bmp")
'画像を描画する
e.Graphics.DrawImage(img, e.MarginBounds)
'次のページがないことを通知する
e.HasMorePages = False
'後始末をする
img.Dispose()
End Sub
■No2435に返信(johnさんの記事)
>
> ↓のサンプルは、画像ファイルの印刷ができます。
> 但し、一頁の印刷しかできないです。
> もし、ファイルは多数ページのTIFの場合は、書き方を教えてください。

TIFとは、tiffのことでしょうか?そうであるとした時、問題となるのはtiff内のすべてのフレームをどうやって取得するかということになるでしょう。(数ページ印刷する例は、「.NET Tips - 文字列を印刷する」をご覧ください。)

ということで、pictureBox1にtiff内の画像を表示するコードを書いておきますので、参考にしてみてください。

Dim g As Graphics = pictureBox1.CreateGraphics()

Dim img As Image = Image.FromFile("C:\dbs1.tiff")
Dim fd As New FrameDimension(img.FrameDimensionsList(0))
Dim fdcnt As Integer = img.GetFrameCount(fd)
Dim i As Integer
For i = 0 To fdcnt - 1
img.SelectActiveFrame(fd, i)
g.DrawImage(img, 0, i * img.Height)
Next i

img.Dispose()
g.Dispose()
できました!

ありがとうございました!!!
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板