プロが教えるわが家の防犯対策術!

ピクチャーボックスの画像を印刷・BMPで保存したいのですがどうやったらいいのかわかりません誰か教えてください

A 回答 (4件)

きっとAutoRedrawがFalseのためでは?



Picture1.Refresh
Call SavePicture(Picture1.Image, "c:\test.bmp")
としてあげてみてください
    • good
    • 2
この回答へのお礼

やっとできました
ありがとうございます

お礼日時:2001/11/14 17:51

>プロパティの値が不正



おそらく画像を読み込んでいないピクチャボックスを保存しようとしたためだと思います。
何か画像が読み込まれていたならば、エラーはでません。

もし、Picuterが存在しないピクチャボックスを保存するなら
Call SavePicture(Picture1.Image, "c:\test.bmp")
としてあげたらよいと思います。

この回答への補足

やってみたら保存はされましたが何も表示されてませんでした
ピクチャーボックスにはちゃんと描画されてます
あとできれば白黒で保存したいのですが出来ますか?

補足日時:2001/11/14 16:54
    • good
    • 0

それじゃあ、印刷を。



'(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を指定すると画像をコピーするっていうことだけ覚えておけばいいかと。


先の回答と同じく、質問等ありましたら補足などにお書きください。
    • good
    • 0
この回答へのお礼

そのままではできなかったけど色々手を加えたら出来ました
ありがとうございました

お礼日時:2001/11/14 18:03

とりあえず、保存だけ書いておきます。


Call SavePicture(Picture1.Picture, "c:\test.bmp")

この回答への補足

そのまま入力したけどプロパティの値が不正ですと出ました
何故でしょう

補足日時:2001/11/13 21:05
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!