答えて
私はあなただけのフォームの一部ではなく、完全に、フォーム全体に透明度(より正確と呼ばれる、不透明度を)を適用することができないと思います。
しかし、カスタムシェイプフォーム(つまり、非長方形)は、そのフォームのさまざまな部分が透過的で、非常に簡単に作成できます。あなたが達成しようとしている正確な「見た目」に応じて、これはあなたが得るのに最も近いかもしれません。
独自のカスタム型のフォームを作成するためにこれらのリンクを見てみましょう:
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つの形式であることをユーザーに見せることができますが、これは非常に扱いにくいかもしれませんが、完璧な解決策ではありません(しかし、あなたの正確なニーズに応じて)。
p/invoke呼び出しと回避策を使いたくない場合でも、WinFormsでもこれが可能かどうかはわかりません。
代わりに、Windows Presentation Foundation(WPF)を使用して、そのような効果がほとんど実現できない場合があります。
フォームに完全透明のウィンドウを作成し、完全透過ウィンドウに半透明フォームをフローティングすることで、これを行うことができます。
まず、メインフォームの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この半透明のウィンドウをフォーム上にサンプルアプリケーションを実行するには
- 1. 完全に透明なJFrame上で部分的に透明なJButtonを作成するにはどうすればよいですか?
- 2. 移動するときにフォームを部分的に透明にするにはどうすればよいですか?
- 3. 部分的なメソッドの他の部分に移動するにはどうすればいいですか?
- 4. 部分的に一致するキーをどのように照会すればよいですか?
- 5. UIViewの一部を透明にする
- 6. GDでPHPで部分透過性を設定するにはどうすればよいですか?
- 7. 分断器で部分的にリンクを確認するにはどうすればよいですか?
- 8. フローティングボタンを部分的に透明にするandroid
- 9. Matlabで画像に部分的に透明なオーバーレイを作成するには?
- 10. 透明部分を含むシェイプの一部を非表示にしますか?
- 11. Delphiを使用して、部分的に透明なイメージをPDFキャンバスに印刷するにはどうすればよいですか?
- 12. グリッドの一部分を二次的な量でグループ化するにはどうすればいいですか?
- 13. three.js:部分的に透明なメッシュでキャストされたシャドウ
- 14. Excelで部分テキストマッチングを行うにはどうすればよいですか?
- 15. フォームのslideUp()の部分をユーザーに表示するにはどうすればよいですか?
- 16. フォームの特定の部分をスクロール可能にするにはどうすればよいですか?
- 17. TFSで部分的にマージされたチェンジセットを解決するにはどうすればよいですか?
- 18. Java Swing:ダイアログを部分的に透明にします。
- 19. 機能が部分的かどうかを確認するにはどうすればよいですか?
- 20. レイアウトを半透明にするにはどうすればよいですか?
- 21. ビューを50%透明にするにはどうすればよいですか?
- 22. qtreewidgetヘッダーを透明にするにはどうすればよいですか?
- 23. 送信フォームにウェブサイトの一部を再読み込みするにはどうすればよいですか?
- 24. 透明なDirectXコンテンツを透明なウィンドウに描画するにはどうすればよいですか?
- 25. C#でExcelファイルの一部を縮小データセットに変換するにはどうすればよいですか?
- 26. パターンに一致する部分文字列を抽出するにはどうすればよいですか?
- 27. Pythonで部分文字列を再帰的に検索するにはどうすればよいですか?
- 28. ウェブページの異なる部分を動的に更新するにはどうすればよいですか?
- 29. Cで部分文字列を取得するにはどうすればよいですか?例えば
- 30. 部分的にネストされたリソースフルルートを設定するにはどうすればよいですか?
なぜ-1ですか?私の答えに何が間違っていたのですか? WinFormsでは、完全なフォーム上だけで透明部分を設定することはできますが、その部分に透明部分を設定することはできませんので、簡単に行うことはできません。 – codymanix
+1は、downvoteを打ち消す。 WinFormsでこれを行うのは難しいことではありませんが、*ちょっとハッキーで、WPF *はこのような点では優れています(ただし、MSのエンジニアがあなたのためにすべてをやることは面白くありません)。 – MusiGenesis
少なくともあなたの「楽しくない」議論は非常に議論の余地があると考えることができます。 – codymanix