PictureBoxの背景を透過する方法はあるのでしょうか?
Property(やWEB)を調べた限りでは見当たらなかったのですが.
よろしくお願いします.
.NET ならBackColor プロパティを System.Drawing.Color.Transparent に設定するとできます。ただし透明度設定ではないので完全に透過。しかも下にあるコントロールは見えない。
VB6 だと、Label コントロールの BackStyle プロパティを使用して、ラベルの背景を透明にするかどうかを指定しているとの事ですが・・・
しかしこれってラベルだけ?
お返事ありがとうございます.
環境を書いていなくてすみません,VB6です.
確かにLabelですとできるのですが,PictureBoxにはそれらしきプロパティが無いですね,,
はじめまして。
imageコントロールではだめですか?
的違いだったらごめんなさい。
お返事ありがとうございます.
Lineメソッド等で描画を行っているので,imageコントロールではだめなんです.
描画していない部分を透過にしたいのですが,,
Delphiでのことで、VBでうまく使えるかどうかは不明な上、
すごく面倒なことになる(かつ、安全でない)ことになりますけど、
・PictureBoxをサブクラス化し、WM_EraseBkGndを無視するようにする。
・APIのSetWindowLongで、拡張ウィンドウスタイルに、"WS_EX_TRANSPARENT"を追加する。
これで透過できるかな・・・と思います。いちおうDelphiでは、これで透明化します。
もしかしたら下のはなくても平気かも。
描画は上にグラフィックコントロールをおいても平気だったので、多分平気です。
あとは、DelphiのTGraphicControlがやってることと同じこと(デバイスコンテキストだけを作り、それをフォーム上に表示する)をすればできそうですけどね…。
お返事いただいてありがたいのですが,VB不慣れなためやり方がよく分かりません,,
単純な図形でしたので,結局形に合わせて複数個のPictureBoxを作ることで
解決しました.(解決していませんが,,)
ありがとうございました m()m
ツイート | ![]() |