- PR -

コントロールの背景を透明にする方法

投稿者投稿内容
ジブ
大ベテラン
会議室デビュー日: 2005/09/22
投稿数: 135
投稿日時: 2005-10-09 20:07
先日はいろいろありがとうございました。
おかげさまで、インタフェースの数は増えましたが
かなり全体的に整理されスリム化されました。

さて、今回はなんとかコントロールを透明にする方法。。
というか、コントロールにバックグラウンドを塗らせない方法はないもののかと
お知恵を拝借いたしたく投稿させていただきました。

ユーザーコントロールでうまくいかなかったので
ラベルコントロールあたりを継承すればなんとかいけるかなと思ったのですがうまくいきません。

簡単にいえばすべて自分でお絵描きするから、箱の中のクリックイベントだけ拾ってくれればいいよ。
というようなコントロールはどこかにないものでしょうか?

すべてのコントロールは必ずバックグラウンドを塗ってしまうものなのでしょうか?

Visual Studio .NET 2003 の新機能の「四角形以外の Windows フォームの作成」
とかを読んでみましたが、どうもよくわかりません。

よろしくお願いいたします。

ジブ
大ベテラン
会議室デビュー日: 2005/09/22
投稿数: 135
投稿日時: 2005-10-09 20:35
ジブです。書き忘れました。環境は

とりあえずVS.net 2003 での VBのwindowsアプリです。
ジブ
大ベテラン
会議室デビュー日: 2005/09/22
投稿数: 135
投稿日時: 2005-10-09 20:52
おっ

OnPaintBackGroundをオーバーライドしたらとりあえず白くはなった。

背景をわざわざ消しているのかな?

OnPaintClearみたいなのがあるのかなと思って探したけどみつからない。

Overridableになっていないだけ??

うーーーーん。。。。。いっぱいあって。よくわからん。
ジブ
大ベテラン
会議室デビュー日: 2005/09/22
投稿数: 135
投稿日時: 2005-10-09 20:59
InitLayoutをオーバーライドしてなにもしないと
多分、これはほんとの透明なのかな?

あかん、コンテナのコンテナが背景を保存している。

でも、ここで何かすればうまくいきそうな予感。

。。。。時間切れ。
aacute
常連さん
会議室デビュー日: 2005/08/25
投稿数: 30
投稿日時: 2005-10-09 21:20
System.Windows.Forms.Control.BackColor
System.Drawing.Color.Transparent にすれば透明にはなりますけど。

あと、できればどういうことをやってるのかわかるような最小のコードを書いてくれませんか?
そうするとこちらも勉強になって助かります。
ジブ
大ベテラン
会議室デビュー日: 2005/09/22
投稿数: 135
投稿日時: 2005-10-09 22:26
aacuteさん、どうもありがとうございました。
うまくいきました。UserControlではだめだったですがLabelならうまくいきました。

最小限のコードはというほどではないです。

Inherits Label

として初期化時に

Me.Backcolor = Color.TransParent

でOkでした。

Inherits UserControlではNGでした。

もっと早く気づくべきでした。

違う方向で四苦八苦してました。感謝です。

ありがとうございました。
ジブ
大ベテラン
会議室デビュー日: 2005/09/22
投稿数: 135
投稿日時: 2005-10-09 22:50
あと、補足質問です。

TranceparentってプロパティウィンドウではWebタブに乗っているんですが
これってWindowsアプリでは使って差し支えないものなのでしょうか?

以前、どこかで使えないとエラーが出たような記憶があって
使わないようにしていたのですが
私の気のせいなのかもしれません。

このタブは使っても大丈夫でしょうか?



ジブ
大ベテラン
会議室デビュー日: 2005/09/22
投稿数: 135
投稿日時: 2005-10-10 09:21
ジブです。

やはり、だめでした。
昨夜うまくいったと思ったのは気のせいでした。

TranceParentって、背景をぬらないのではなくて
どうやら背景にコンテナ色を塗っているようです。

コントロール同士を重ねると、重なった部分ではコンテナ色が現れる。

なんでわざわざ背景をぬるんだろう??

なんとか背景を塗らせない方法はないものでしょうか?

または、背景色を持たないコントロールはないものか?

作るとなるとめんどくさそうですよね??

スキルアップ/キャリアアップ(JOB@IT)