- ベストアンサー
ピクチャーボックスの画像を印刷・BMPで保存したい
ピクチャーボックスの画像を印刷・BMPで保存したいのですがどうやったらいいのかわかりません誰か教えてください
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
きっとAutoRedrawがFalseのためでは? Picture1.Refresh Call SavePicture(Picture1.Image, "c:\test.bmp") としてあげてみてください
その他の回答 (3)
- TAGOSAKU7
- ベストアンサー率65% (276/422)
>プロパティの値が不正 おそらく画像を読み込んでいないピクチャボックスを保存しようとしたためだと思います。 何か画像が読み込まれていたならば、エラーはでません。 もし、Picuterが存在しないピクチャボックスを保存するなら Call SavePicture(Picture1.Image, "c:\test.bmp") としてあげたらよいと思います。
補足
やってみたら保存はされましたが何も表示されてませんでした ピクチャーボックスにはちゃんと描画されてます あとできれば白黒で保存したいのですが出来ますか?
- ARC
- ベストアンサー率46% (643/1383)
それじゃあ、印刷を。 '(General)(Declarations) 'APIの宣言 Option Explicit Private Declare Function StretchBlt Lib "gdi32" _ (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long _ , ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal nSrcWidth As Long, ByVal nSrcHeight As Long _ , ByVal dwRop As RasterOpConstants) As Long 'Picture1をクリックすると、プリンタでPicture1を印刷する。 Private Sub Picture1_Click() Printer.PSet (0, 0), vbWhite '*1 StretchBlt Printer.hdc, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight _ , Picture1.hdc, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight _ , vbSrcCopy '*2 Printer.EndDoc End Sub ******** (General)(Declarations)の中身については先の回答↓ http://www.okweb.ne.jp/kotaeru.php3?q=168025 と同じですね。 で、今回はピクチャーボックスをクリックしたときに、印刷するようにしてみました。 *1: APIを使って画像を転送する前に、一度プリンタを初期化しています。これより前に、Printer.Lineなどでプリンタに何か描画をしていれば、この行は無くても構いません。 *2: StretchBLTを使って、ピクチャーボックスの画像をプリンタに転送しています。 「StretchBLT」APIは、以下のように引数を指定します。 StretchBLT 複写先のオブジェクトのhDCプロパティ, 複写先のX座標, Y座標, 幅, 高さ, 複写元オブジェクトのhDCプロパティ, 複写元のX座標, Y座標, 幅, 高さ, 転送モード 転送モードについては、とりあえずは、vbSrcCopyを指定すると画像をコピーするっていうことだけ覚えておけばいいかと。 先の回答と同じく、質問等ありましたら補足などにお書きください。
お礼
そのままではできなかったけど色々手を加えたら出来ました ありがとうございました
- TAGOSAKU7
- ベストアンサー率65% (276/422)
とりあえず、保存だけ書いておきます。 Call SavePicture(Picture1.Picture, "c:\test.bmp")
補足
そのまま入力したけどプロパティの値が不正ですと出ました 何故でしょう
お礼
やっとできました ありがとうございます