dポイントプレゼントキャンペーン実施中!

Visual C# Express Edition で開発を行っています。

ユーザーコントロールで前景(背景の逆という意味で・・)を描画したくて困っています。

どういうことかというと、ユーザーコントロール上にボタン・リストボックス等を配置して、それらの上に1枚の大きな絵を半透明で描画したいのです。

ユーザーコントロールのOnPaintやPaintイベントで描画しても背景としてしか描画されず、描画された絵の上にコントロールが乗ってしまいます。

上記処理の実現方法がありましたら、教えて下さい。

A 回答 (3件)

C#でできるか分かりませんが、ウィンドウ自体にアルファ値を設定できます。


コントロール群が被さる程度の大きさのウィンドウを別に作成し、そのウィンドウのアルファ値を操作してみてはいかがでしょう?
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
私もその方法でいけると思い試したのですが、透過できるのはトップレベルのWindowだけ見たいですね。(いろいろ試しましたが子Windowではできませんでした)
そこでトップレベルの半透明Form(Window)を作ってそれをTopMostで表示でできたんですが、TopMostなので他のWindowがアクティブの時でも最前面に見えてしまうんですよね。(フォーカス失ったらTopMostやめる、という処理を入れればいいんですが)
やはりこの方法で行くしか無いんですかね~。

お礼日時:2006/05/27 11:59

なるほど~


たしかにSetLayeredWindowAttributesなどは子ウィンドウに設定できませんでしたね^^;
そうなると、punioさんのやられているようにTopMostで別ウィンドウを作成するしかないですかね・・・

でも気になるのは、コントロールにコンボボックスがあった場合、ドロップリスト部がTopMostの半透明ウィンドウのさらに上に出ちゃったりしないですかね・・
    • good
    • 0
この回答へのお礼

リストは前面にでますね・・・(´д`;)
まぁこれはこれでいいかな、と。
他の方法は・・・ちょっと無理っぽいですかね~。
一応この方法と今後の試行錯誤をYahooBlogに書く(つもり)ので、このページを見に来てくれた人のためにURL乗っけておきます。
http://blogs.yahoo.co.jp/yse_99/folder/1404297.h …
clsdi99さんありがとうございました

お礼日時:2006/05/30 12:56

既に描画自体の処理は心得ておられるようなので、簡単に。



ラベル(等の描画可能なコントロール)をコントロール上に貼り付けて、その下に各種コントロールを配置されると良いのでは?
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
ラベルで試してみたのですが、背景として透過できるのはコントロールの親のみ(Label.Parentに指定した物が背景となる?)という点と、イベントが下のコントロールに届かないという問題があり、この方法では実現できそうもありませんでした。
私の実装方法がまずいのかも知れませんが・・(´д`;)

お礼日時:2006/05/25 10:56

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!