開発環境:WINXP VB6 SP3
現在、デバイスコンテキストに作成したBMPをファイル保存するものを
作成しているのですが、
ひとまずPictureBoxへ作成するサンプルを見つけ、それだと実現したんですが、
PicutureBox抜きでメモリ内で作成してそのままファイルへ流し込みたいのですが、実現できるのでしょうか?
PicutureBoxのVisibleをFalseにすると、自分が描画したものではなく、
FormデザインがBmpに保存されてしまいます。。。
------------------------------------------------------------------
現在のおおまかな処理の流れ
CreateCompatibleDC(Picture1.hDC)
Call デバイスコンテキストへグラフ等を描画する処理
CreateCompatibleBitmap(Picture1.hDC, bmpWidth, bmpHeight)
OldBMP = SelectObject(memDC, memBMP)
rc = BitBlt(memDC, 0, 0, bmpWidth, bmpHeight, Picture1.hDC, 0, 0, SRCCOPY)
Call ビットマップファイルへ保存する処理
-------------------------------------------------------------------
可能だと思いますが、VBだとカナリ面倒だと思いますよ。
http://www13.plala.or.jp/kymats/study/multimedia.html
の
BMPファイルに保存する
あたりを参考にしてください。
ただし、C++ベースの記述なのでVB用に置き換えて解釈してください。
それが出来ないのであればこの方法はあきらめてください。
OleCreatePictureIndirect を使えば出来るかも。
ビットマップハンドルからOleCreatePictureIndirect で
stdole.IPictureDispを取得した後SavePictureで保存。
(出来るかは試していないので微妙)
参考
http://jet.breeze.jp/program/tips/vb60img.htm
さっそくのお返事有難うございます。
一度2つの方法を試してみようと思います。
ちなみにPicutureBoxのデバイスコンテキストは使用したままで
PictureBoxを隠すなり見えない状態(作業領域として使用するだけなので)
で使用することは可能なのでしょうか?
いろいろ試してはいるんですが。。。
AutoRedrawプロパティをTrueにしておくとか。
その場合は、ついでにImageプロパティと組み合わせると
楽でしょう。
ありがとうございます!
AutoRedrawをTrueにすると確かにVisible=Falseに設定しても
問題なくいけました!
しかしなぜそれを設定するといけるのでしょうか?
自分にはその原理がわかりません。。。
後学のためにももし分かれば教えていただけないでしょうか?
http://www.mb.ccnw.ne.jp/garger-studio/vbgame/102.html
を参考にしてください。
というか、Google検索で「AutoRredraw」で一番上に来たサイトです。
最低限検索等をしたのち、わからないのであれば質問するようにしましょう。
申し訳ありません・・・
今までずっと悩んで調べていたのに、解決したうれしさのあまり
ついでしゃばってしまいました;
| ツイート |
|