- - PR -
printdocumentからimageを作る方法
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-01-18 22:06
遅くなってしまいました。
当たりです。 PrintPageをオーバーライドしています。 Private Sub pdpr(ByVal sender As System.Object, _ ByVal e As System.Drawing.Printing.PrintPageEventArgs) _ Handles PrintDocument1.PrintPage .... の中でNSSPRNXAを使って印刷データを作ってます。 で、ここの末尾に Dim rect As Rectangle = e.PageBounds Dim bmp As New Bitmap(rect.Width, rect.Height) e.Graphics.DrawImage(bmp, 0, 0) '画像を保存する bmp.Save("\test.bmp", System.Drawing.Imaging.ImageFormat.Bmp) を入れてみました。 で、『e』はサイズなどは全部正しく持っているようなのですけれど、出力は真っ黒でした。 これはgraphicsからbitmapの作り方が悪いのでしょうか? 自分でやっておいてなんですが、 e.Graphics.DrawImage(bmp, 0, 0) は間違ってる気がして仕方ないです。 画像の周りに関してもうちょっとちゃんと勉強した方がいいですね。私orz | ||||||||
|
投稿日時: 2006-01-19 16:38
お察しどおり間違ってます。(^^;) これは、e.Graphics に対して描画しています。 System.Drawing.Bitmap のコンストラクタのオーバーロードで、 Graphics が指定できるものをチョイスすることになるでしょう。 それでもできないかもしれません。(自信なし) _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-01-19 17:14
自前のハードコピーのロジックを眺めていましたが、 e.Graphicsから、出力ビットマップからGraphics.FromImageで取得したGraphicsオブジェクトへ DC系APIおよびBitBlt APIで転送するとできるような。 | ||||||||
|
投稿日時: 2006-01-19 17:47
こんなかんじでいいかしら。
#ReleaseDCは必要か?。。。 | ||||||||
|
投稿日時: 2006-01-19 18:12
ですよね。やっぱり。
System.Drawing.Bitmap にはgraphicsを突っ込める物って無いようなんです。うーん。 そもそも私、graphicsとimageの関係が良くわかってないです。 その辺調べなきゃ・・ | ||||||||
|
投稿日時: 2006-01-19 18:17
ここが参考になるかも。 「どぼんさん」 http://dobon.net/ のTips「PictureBoxのImageプロパティに関するよくある勘違い」 | ||||||||
|
投稿日時: 2006-01-19 18:29
Graphics は指定できても、解像度しか取得してなさ気ですね。(^-^;) (あのオーバーロード、すっごく紛らわしい...) PrintController が現実的なようですが、試されました? ちょっと、私も時間が空いたら試してみようかな。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-01-19 19:27
>まどかさん
返信ありがとうございます。
どぼんさんのところ見てみました。 PictureBoxのGraphicsオブジェクトを使ってPictureBoxに描画し、そのイメージをPictureBoxのImageプロパティで取得しようとすると、エラーが出る(もしくはうまく行かない)。 を地で行っていたんですよね。私。 image→graphics『drawimage』 graphics→image『???』 だった訳です。 これの???の部分がBitBltってことなんでしょうか? で、早速試してみました。 BitBltの宣言は どぼんさん http://dobon.net/vb/dotnet/vb6/printform.html を参考にしてみました。 で、BitBltのパラメータの『dwRop』でつまづいてしまいました。 microsoft http://www.microsoft.com/JAPAN/developer/library/jpgdipf/_win32_BitBlt.htm を見る限りではご提供いただいたソースの『SRCCOPY』がはまりそうなのですけれど、要求されるのはinteger。どぼんさんのところのものを参考にすると『13369376』になっています。 で、とりあえずそれで動かしてみた所、『無効であるか、現在サポートされていない形式です』と言われてしまうbitmapが出力されました。 うーん、BitBltについてもうちょっとちゃんと調べてみます。 |