tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル 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

ありがとうございます。
まだ身体が完全に治っていないので、今日はまだ休みを貰っていて仕事場ではないのですが、
復帰したら早速試してみます。
結果は追って書き込みます。
ありがとうございました。そして連絡が遅くなって本当にすみませんでした。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。