C#, C♯, C#相談室 Part55

このエントリーをはてなブックマークに追加
80デフォルトの名無しさん
Form.Opacity=0.5とかで透かしたた上で
文字などは透かしたくない場合はどうやればいいですか?
81デフォルトの名無しさん:2010/02/10(水) 09:53:13
できないはず
やるならBackColorにFromArgbとかで半透明を与えるか
背景画像を動的に作ってそいつに半透明を与えるかしないと
82デフォルトの名無しさん:2010/02/10(水) 10:08:59
ごめんフォームのバックカラーに半透明は無理だな
83デフォルトの名無しさん:2010/02/10(水) 10:41:30
どうも無理っぽいですね。

Formを2個表示して
formAをOpacityで半分透かして
formBのBackColor = White
formBのTransparencyKey = White
で2個のフォームを重ねて表示することで実現できそうです・・・・
無理やりですが。
他にいい方法があったら教えてください。

84デフォルトの名無しさん:2010/02/10(水) 10:42:41
formBに文字や図形など描画すると所望の動作をするようになりました。
85デフォルトの名無しさん:2010/02/10(水) 10:47:13
うーむ
透明色をグラデーションした画像を当てはめてみたが
どうも完全な透明とそれ以外としか扱ってくれないねえ

やり方はあるのかもしれないけど
86デフォルトの名無しさん:2010/02/10(水) 10:52:16
作った背景画像
http://uproda.2ch-library.com/212053qe9/lib212053.png

実行してみた状態
http://uproda.2ch-library.com/212054XTX/lib212054.png

周りに透明が多いのはTransparencyKey=BackColorで透明にしてあるので
8784 :2010/02/10(水) 11:17:22
こっちで書いたのがこんな感じです。
http://uproda.2ch-library.com/212061CPP/lib212061.jpg
88デフォルトの名無しさん:2010/02/10(水) 11:19:11
>>87
なるほど
師匠ですか・・・
じゃなくて

まあフォーム2枚を連動させたりとめんどくさいですけどとりあえずそれでw
89デフォルトの名無しさん:2010/02/10(水) 14:00:32
全部オーナードローするならレイヤードウィンドウって手も
90デフォルトの名無しさん:2010/02/10(水) 15:38:42
WPFだったら楽なのに
91デフォルトの名無しさん:2010/02/10(水) 16:23:19
ウィンドウそのものを透明にするのはWPFの範囲外だぞ
92デフォルトの名無しさん:2010/02/10(水) 20:03:38
>>80
過去に何度か出てると思うけど、一応正攻法のやり方はこうらしい。
http://yellow.ribbon.to/~azumaya/doc_dotnet_uplayeredwnd.php
93デフォルトの名無しさん:2010/02/10(水) 20:09:51
>>92
.net側が使わないだけなのか
最近のGPUだと2D部分も結局は3D部分でやってるとかあったので
できないはずは無いと思ってたんだが