答えて
私はあなただけのフォームの一部ではなく、完全に、フォーム全体に透明度(より正確と呼ばれる、不透明度を)を適用することができないと思います。
しかし、カスタムシェイプフォーム(つまり、非長方形)は、そのフォームのさまざまな部分が透過的で、非常に簡単に作成できます。あなたが達成しようとしている正確な「見た目」に応じて、これはあなたが得るのに最も近いかもしれません。
独自のカスタム型のフォームを作成するためにこれらのリンクを見てみましょう:
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. UIViewの一部を透明にする
- 5. GDでPHPで部分透過性を設定するにはどうすればよいですか?
- 6. Delphiを使用して、部分的に透明なイメージをPDFキャンバスに印刷するにはどうすればよいですか?
- 7. Java Swing:ダイアログを部分的に透明にします。
- 8. Excelで部分テキストマッチングを行うにはどうすればよいですか?
- 9. フォームのslideUp()の部分をユーザーに表示するにはどうすればよいですか?
- 10. 機能が部分的かどうかを確認するにはどうすればよいですか?
- 11. ビューを50%透明にするにはどうすればよいですか?
- 12. パターンに一致する部分文字列を抽出するにはどうすればよいですか?
- 13. ウェブページの異なる部分を動的に更新するにはどうすればよいですか?
- 14. 部分的にネストされたリソースフルルートを設定するにはどうすればよいですか?
- 15. 透明なDirectXコンテンツを透明なウィンドウに描画するにはどうすればよいですか?
- 16. Cで部分文字列を取得するにはどうすればよいですか?例えば
- 17. 部分的なストリームに基づいてビデオを再生するにはどうすればよいですか?
- 18. どのようにしてウィンドウの一部だけを透明にすることができますか? (WIN32)
- 19. 文字列をPerlで2つの部分に分割するにはどうすればよいですか?
- 20. コードの他の部分に値を動的に追加するにはどうすればいいですか?
- 21. タスクのバッチで部分的な成功を処理するにはどうすればよいですか?
- 22. 部分一致で全文を検索するにはどうすればよいですか?
- 23. 部分ビューで一括保存を実行するにはどうすればよいですか?
- 24. 「部分的に」モーダルダイアログを作成するにはどうすればよいですか?
- 25. Androidソースコードを部分的にビルドするにはどうすればよいですか?
- 26. 透明部分に画像を追加
- 27. マスターレイアウトの一部としてログオンHTMLフォームを実装するにはどうすればよいですか?
- 28. 部分的なカールの中からmapView mapTypeを変更するにはどうすればよいですか?
- 29. divの部分をHTML5とキャンバスで透明にします
- 30. データベースでフォームの一部を記入するにはどうすればいいですか?
なぜ-1ですか?私の答えに何が間違っていたのですか? WinFormsでは、完全なフォーム上だけで透明部分を設定することはできますが、その部分に透明部分を設定することはできませんので、簡単に行うことはできません。 – codymanix
+1は、downvoteを打ち消す。 WinFormsでこれを行うのは難しいことではありませんが、*ちょっとハッキーで、WPF *はこのような点では優れています(ただし、MSのエンジニアがあなたのためにすべてをやることは面白くありません)。 – MusiGenesis
少なくともあなたの「楽しくない」議論は非常に議論の余地があると考えることができます。 – codymanix