2009-10-11 20 views

答えて

7

私はあなただけのフォームの一部ではなく、完全に、フォーム全体に透明度(より正確と呼ばれる、不透明度を)を適用することができないと思います。

しかし、カスタムシェイプフォーム(つまり、非長方形)は、そのフォームのさまざまな部分が透過的で、非常に簡単に作成できます。あなたが達成しようとしている正確な「見た目」に応じて、これはあなたが得るのに最も近いかもしれません。

独自のカスタム型のフォームを作成するためにこれらのリンクを見てみましょう:

Creating Custom Shaped Windows Forms in .NET
Custom shaped form with a drop down in C#
Shaped Windows Forms and Controls in Visual Studio .NET

唯一の他の選択肢が設定されているそのうちの一つ二つの形式を表示することであってもよいです部分的に透明にする。 2番目のフォームが "メイン"フォームのすぐ横に配置され、ユーザーが "メイン"フォームを移動/サイズ変更したときに比例して移動/サイズ変更されることをプログラムで保証する必要があります。これは2つの形式ですが、実際には1つの形式であることをユーザーに見せることができますが、これは非常に扱いにくいかもしれませんが、完璧な解決策ではありません(しかし、あなたの正確なニーズに応じて)。

0

p/invoke呼び出しと回避策を使いたくない場合でも、WinFormsでもこれが可能かどうかはわかりません。

代わりに、Windows Presentation Foundation(WPF)を使用して、そのような効果がほとんど実現できない場合があります。

+0

なぜ-1ですか?私の答えに何が間違っていたのですか? WinFormsでは、完全なフォーム上だけで透明部分を設定することはできますが、その部分に透明部分を設定することはできませんので、簡単に行うことはできません。 – codymanix

+0

+1は、downvoteを打ち消す。 WinFormsでこれを行うのは難しいことではありませんが、*ちょっとハッキーで、WPF *はこのような点では優れています(ただし、MSのエンジニアがあなたのためにすべてをやることは面白くありません)。 – MusiGenesis

+0

少なくともあなたの「楽しくない」議論は非常に議論の余地があると考えることができます。 – codymanix

0

シンプル:

myForm.Opacity = 80; // Change 80 with your value 
+2

@FBSC - 完全なフォームの不透明度を変更します。質問者が元の質問のように聞こえるのは、フォーム全体ではなくフォームの一部の不透明度を変更したいということだけです。 – CraigTP

+0

申し訳ありませんが、私はその部分をスキップしました:S – FBSC

5

フォームに完全透明のウィンドウを作成し、完全透過ウィンドウに半透明フォームをフローティングすることで、これを行うことができます。

まず、メインフォームのTransparencyKeyをColor.Redに設定し、panel1という名前のPanelをフォームに配置し、BackColorを赤に設定します。これにより、完全に透明な「ウィンドウ」が作成されます。このようなフォームレベルのフォームの参照を作成します。

private Form _floater; 

次へ]を、あなたのメインフォームのLoadイベントにこのコードを配置:

_floater = new Form(); 
_floater.ShowInTaskbar = false; 
_floater.FormBorderStyle = FormBorderStyle.None; 
_floater.Opacity = .5; 
_floater.Size = panel1.Size; 
_floater.StartPosition = FormStartPosition.Manual; 
_floater.Location = panel1.PointToScreen(new Point(0, 0)); 
_floater.Show(this); 

を最後に、メインフォームの移動イベントにこのコードを配置:

_floater.Location = panel1.PointToScreen(new Point(0, 0)); 

半透明の「ウィンドウ」でユーザーがクリックすると、2番目のフォームがフォーカスを取得し、メインフォームのタイトルバーがグレー表示されるという唯一の問題です。

Click hereこの半透明のウィンドウをフォーム上にサンプルアプリケーションを実行するには

関連する問題