PictureBoxに画像が描画されているかどうか知るには?

解決


YOO  2005-03-24 17:15:27  No: 120430  IP: [192.*.*.*]

PictureBoxにAPIのBitBltなどで描画した場合に、
PictureBoxに描画されているかどうか知る方法は、あるのでしょうか?

Win2000
VB6.0 SP6

編集 削除
Say  2005-03-24 21:37:59  No: 120431  IP: [192.*.*.*]

どういう回答を期待しているのかつかみにくいのですが・・・。

いつBitBlt関数を発行したかを知りたいのなら、
コードを書いているあなたが一番ご存知なのでは?

それとも、うまく書けたかどうかを知りたいのでしょうか?

編集 削除
Yoo  2005-03-25 09:41:39  No: 120432  IP: [192.*.*.*]

>いつBitBlt関数を発行したかを知りたいのなら、
>コードを書いているあなたが一番ご存知なのでは?

そうですよね。
やはり、自分でその辺を管理しないとだめですね。
プロパティで判断できればと思っていたのですが。

編集 削除
さるべーじ  2005-03-25 09:57:42  No: 120433  IP: [192.*.*.*]

原則としてAPI関数は、VBの管理の外側にあります。
ので、たとえばbitbltで表示の状態を変更しても、それがVB側で管理している何らかのプロパティを自動的に変更させる、ということはありません。

bitbltでよくやるのが、PictureBox側のAutoRedrawをFalseのままにしていたり、ImageとPictureあたりのコントロール手順を間違って、bitbltを実行してもイメージが表示されなかったり、他のウィンドウに隠れた部分だけイメージが欠けたりする事象です。

このへんは「bitbltが失敗」しているのではなく、受け取ったVB側での処理のバグということになります。
ので、「とりあえずbitbltを流してからちゃんと表示されているかどうかのチェックをする」プログラムを組むのではなく、「bitbltが間違いなく適切に実行される」プログラムを組むべきでしょう。

ハズしているかもしれませんが、私も最初はこのへんでとまどったので、一応ご参考までに。

編集 削除
しとかた  2005-03-25 11:09:18  No: 120434  IP: [192.*.*.*]

bitbltするって事は元の画像がある訳だから
GetDibitsでピクセルデータ取得して比較って手もありますが
Sayさんとさるべーじさんが言ってる事がもっともですね。

編集 削除
Yoo  2005-03-25 18:46:17  No: 120435  IP: [192.*.*.*]

自分の考えが、あさはかなのがよくわかりました。
レスをいただき大変ありがとうございました。

編集 削除