- - PR -
コントロールを透明にしても有効
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-04-26 16:32
コントロールを透明にします。
やり方は2通りあると思います。 ・Opacityを0にする ・SetStyle(ControlStyles.SupportsTransparentBackColor, true); this.BackColor = Color.Transparent; このどちらとも、まあ当然なのだとは思いますが 透明のとこの上でクリックしてもイベントを拾いません。 というかないことになってます。 透明にしてもマウスイベントなどを拾うようにするにはどうしたらよいか ご存知の方教えて頂けるとありがたいです。 | ||||
|
投稿日時: 2008-04-26 23:56
無理でしょう。 どうしてもやりたいならマウスフックを仕掛ければ実現できるかもしれませんが、マウス”イベント”ではなくなります。 どちらかというと透明度1%で微妙に半透明がお手軽かもしれません。 #但し、オーバーレイが映らなくなる問題はあります。 | ||||
|
投稿日時: 2008-04-27 00:02
Azuleanさん。毎度ありがとうございます。
無理ですか。やっぱりかという感じです。 ふーん。別の方法を考えます。 | ||||
|
投稿日時: 2008-04-27 02:11
ボタン風なクリックイベントぐらいなら、
透明のlabelで、カーソルをHandに変えれば可能かと。 | ||||
|
投稿日時: 2008-04-27 02:25
taku2888さんアドバイスありがとうございます。
自分なりに色々と調べてみたら SetCaptureというコントロール外のマウスの挙動を 拾うものがあるらしいのですが 僕はC#で組んでいて他の言語のやり方ならそこそこ 参考文献が見つかるのですが C#でとなるとうまくみつかりません。 ご存知であれば教えて頂けるとありがたいです。 | ||||
|
投稿日時: 2008-04-27 10:08
SetCaptureはFormにあるCaptureプロパティとほぼ同じです。 しかし、SetCaptureもCaptureもマウスのボタンが押されている状態、すなわちドラッグしている状態じゃないとうまくかかりません。 例えば、マウスのボタンがいずれも押されていないときにSetCapture/Captureしてもマウスの移動は捕捉できません。 実現する方法としては次のサイトにもありますように、WH_MOUSE_LLでやるしかないかなと思われます。 (次のサイト自体が分かりにくければ、WH_MOUSE_LLで検索してみて下さい) http://support.microsoft.com/kb/318804 | ||||
|
投稿日時: 2008-04-27 17:37
どういったことがしたいのか不明なので何とも言えませんが、
> 透明にしてもマウスイベントなどを拾うようにするにはどうしたらよいか > ご存知の方教えて頂けるとありがたいです。 透明のコントロールでイベントを取るわけですよね。 透明のラベルで取れないイベントなのでしょうか。 イベントの追加でMouseMoveも普通にとれますが。 それとも、アプリのForm外の話でしょうか。 それなら、C++等でDLL作った方が早いですが。 | ||||
|
投稿日時: 2008-04-28 23:13
Azulean,taku2888さん。アドバイスありがとうございます。
ためさせて頂きます。 |
1