タイトル : Re^6: データから画像を取得、画像結合させて印刷したい 投稿日 : 2012/12/14(Fri) 13:45 投稿者 : GFC
まずはお詫び致します。 体調を崩して一週間ほど寝込んでいましたので、返信がかなり遅くなってしまいました。 申し訳ございませんでした。 > > 「画像4枚(データ4件)を生成→1枚に結合→レターサイズでプリンタ出力→次の4件〜」の形式で印刷するプログラムに改造しようとしていました。 > > 画像化するための元データがどのような構成になっているのかとか、 > また、Oracle への接続がSystem.Data.OracleClient なのか、 > Oracle.DataAccess.Client なのか、あるいはそれ以外なのかなどで > 細かいコードは変わってくるとは思いますが、イメージとしてはこんな感じ。 接続はOracle.DataAccess.Client.OracleConnectionで繋いでいます。 データは、(様々な)日付や作業する機械の名前、作業する工程名、作業する場所(スペース)のコード(char6桁)、作業員コード(char5桁)等を取得して 貼り付けるような形です。 > > > Private reader As System.Data.OracleClient.OracleDataReader > '--------------------- > Private Sub Button1_Click(… > : > reader = cmd.ExecuteReader() > If reader.Read() Then > PrintDocument1.Print() '印刷開始 > Else > reader.Close() > MsgBox("対象データ無し") > End If > End Sub > '--------------------- > > 「画像4枚(データ4件)を生成→1枚に結合→レターサイズでプリンタ出力→次の4件〜」の形式で印刷するプログラムに改造しようとしていました。 > > 画像化するための元データがどのような構成になっているのかとか、 > また、Oracle への接続がSystem.Data.OracleClient なのか、 > Oracle.DataAccess.Client なのか、あるいはそれ以外なのかなどで > 細かいコードは変わってくるとは思いますが、イメージとしてはこんな感じです。 > > # 環境が無いので未検証。 > > 実際には、画像をレターサイズ内に納めて描画するために、DrawImage メソッドでは > 描画位置だけでなく、描画サイズも指定して拡大縮小させる必要があるかも。 > > > Private reader As System.Data.OracleClient.OracleDataReader > '--------------------- > Private Sub Button1_Click(… > : > reader = cmd.ExecuteReader() > If reader.Read() Then > PrintDocument1.Print() '印刷開始 > Else > reader.Close() > MsgBox("対象データ無し") > End If > End Sub > '--------------------- > Private Sub PrintDocument1_PrintPage(… > e.Graphics.PageUnit = GraphicsUnit.Millimeter > Using bmp As New Bitmap(220, 400, e.Graphics) '220mm×400mmの大きな画像 > > 'Oracle からデータを取得して画像化 > Using g As Graphics = Graphics.FromImage(bmp) > g.PageUnit = GraphicsUnit.Millimeter > > Using img As Bitmap = CreateImage(reader, 1) '220mm×100mmの画像Aを作る処理 > g.DrawImage(img, 0, 0) > End Using > Using img As Bitmap = CreateImage(reader, 2) '220mm×100mmの画像Bを作る処理 > g.DrawImage(img, 0, 100) > End Using > Using img As Bitmap = CreateImage(reader, 3) '220mm×100mmの画像Cを作る処理 > g.DrawImage(img, 0, 200) > End Using > Using img As Bitmap = CreateImage(reader, 4) '220mm×100mmの画像Dを作る処理 > g.DrawImage(img, 0, 300) > End Using > End Using > > e.Graphics.ResetTransform() > > '作成した一枚絵を貼り付ける処理 > e.Graphics.DrawImage(bmp, e.MarginBounds.Location) > End Using > > 'まだデータが残っているなら、次のページの印刷のために > '再度、PrintPage イベントを発生させる > If reader.Read() Then > e.HasMorePages = True > Else > e.HasMorePages = False > reader.Close() > End If > End Sub ありがとうございます。 まだ身体が完全に治っていないので、今日はまだ休みを貰っていて仕事場ではないのですが、 復帰したら早速試してみます。 結果は追って書き込みます。 ありがとうございました。そして連絡が遅くなって本当にすみませんでした。 |