- PR -

VB.NET 画像を分割後、複数の画像を合成して印刷

投稿者投稿内容
シロ
常連さん
会議室デビュー日: 2005/05/15
投稿数: 34
投稿日時: 2006-06-16 13:51
すばやいお返事ありがとうございます。

PrintPage イベントはちゃんと再度きています。
印刷するページ数の数だけ、呼ばれることも確認しました。

2ページ目以降になると、項目がちゃんと表示(印刷)されないのです。。。
プレビュー画面で確認しても出てくるのは、ヘッダとページ番号のみ(涙)
深山
ベテラン
会議室デビュー日: 2006/05/09
投稿数: 66
お住まい・勤務地: 都内某所
投稿日時: 2006-06-16 14:10
引用:

シロさんの書き込み (2006-06-16 13:39) より:

e.Graphics.DrawImage(imgItem, ItemPara, ItemIRect, GraphicsUnit.Pixel) ' 項目



の部分を1ページ目の項目イメージに固定して、試してください。

全てのページに項目が画像が表示されれば、与えている引数が異常ということになります。
シロ
常連さん
会議室デビュー日: 2005/05/15
投稿数: 34
投稿日時: 2006-06-16 14:34
教えていただいたように試してみました。

e.Graphics.DrawImage(imgItem, ItemPara, ItemIRect, GraphicsUnit.Pixel) ' 項目
を1ページ目の値に固定して試したところ、見事表示されました。

そして、2ページ目の値に固定して試したところ、
想像とは違う状態で表示されました。

ItemPara : 元画像から切り取る形
ItemIRect : 貼り付け先の位置と大きさ
という考えであってますよね。。。?

固定にした場合は、表示されるのに変数にした場合は表示されない、、、
どうしてでしょうか?
値は変数に入っていたものを使ったんですけど。

頭の中がぐちゃぐちゃになってきました。。。
深山
ベテラン
会議室デビュー日: 2006/05/09
投稿数: 66
お住まい・勤務地: 都内某所
投稿日時: 2006-06-16 15:04
引用:

シロさんの書き込み (2006-06-16 14:34) より:

ItemPara : 元画像から切り取る形
ItemIRect : 貼り付け先の位置と大きさ



Graphics.DrawImage メソッド を見たところ、
ItemIRectは元画像の切り取り場所とサイズを指定すると思うのですが?

画像の一部を切り取って表示するも参考になると思います。

[ メッセージ編集済み 編集者: 深山 編集日時 2006-06-16 15:06 ]
シロ
常連さん
会議室デビュー日: 2005/05/15
投稿数: 34
投稿日時: 2006-06-16 15:53
無事できました♪

お忙しい中、回答ありがとうございました。
#特に深山さん

結局、上手くいかなかった原因は勘違いでした。。。

お忙しい中、本当にありがとうございました。
深山
ベテラン
会議室デビュー日: 2006/05/09
投稿数: 66
お住まい・勤務地: 都内某所
投稿日時: 2006-06-16 17:29
引用:

シロさんの書き込み (2006-06-16 15:53) より:

結局、上手くいかなかった原因は勘違いでした。。。


DrawImageの引数部分の勘違いでいいのかな?

#最後に一言
印刷や画像などの処理は、結果が明確に分かるので、処理結果がおかしいな?と感じた場合は、
途中の結果(今回は画像の分割結果)を出力することをお勧めします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-06-17 06:26
ちょっとごめんなさい。次の言葉が気になりました。
引用:

シロさんの書き込み(2006-06-16 13:18)より:

Disposeをしないと、1ページ目が表示されます。


 この Dispose とは、
> e.Graphics.Dispose()
これのことでしょうか?もしそうなら、ってか、そうでなくても、ここで e.Graphics を Dispose してはいけません。だって、まだ使用中ですから。

 PrintDocument.PrintPage イベントの説明を見ると、こう書いてあります。
引用:

Cancel
   印刷ジョブをキャンセルするかどうかを示す値を取得または設定します。
Graphics
   ページの描画に使用される Graphics を取得します。

解説
印刷する出力ファイルを指定するには、 PrintPageEventArgs に含まれている Graphics を使用します。


ここでキャンセルできるということは、まだ印刷処理は行われていないということです。
そして、印刷するのは Graphics プロパティでです。
まだ印刷していないのに、印刷するものを Dispose (使用後の後始末)してしまったら、実際に印刷しようとしたとき、何を使うのでしょう?

 実際、MSDN のサンプルでも、Dispose していません(いや、サンプルがいつも正しいわけではないけれど)。
この Dispose は、不要だと思います。
シロ
常連さん
会議室デビュー日: 2005/05/15
投稿数: 34
投稿日時: 2006-06-18 14:52
なるほど。。。

まだe.Graphicsは使ってる最中なんですね。
設定したら破棄していいと思っていました。

ありがとうございました。

スキルアップ/キャリアアップ(JOB@IT)