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

解決


YOO  2005-03-25 02:15:27  No: 120430

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

Win2000
VB6.0 SP6


Say  2005-03-25 06:37:59  No: 120431

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

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

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


Yoo  2005-03-25 18:41:39  No: 120432

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

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


さるべーじ  2005-03-25 18:57:42  No: 120433

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

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

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

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


しとかた  2005-03-25 20:09:18  No: 120434

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


Yoo  2005-03-26 03:46:17  No: 120435

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加