C# フォームで PictureBox の上に透明なラベルを表示します
C# フォームで、PictureBox に透明なラベルを表示しようとすると、期待される透明効果ではなく、灰色の背景が表示されることがあります。これは、PictureBox がコンテナ コントロールではないためです。
解決策 1: コードの実装
この問題を解決するには、フォーム コンストラクターを変更し、ラベルの親を PictureBox に変更して、その位置を再計算します。
<code class="language-csharp">public Form1() { InitializeComponent(); var pos = label1.Parent.PointToScreen(label1.Location); pos = pictureBox1.PointToClient(pos); label1.Parent = pictureBox1; label1.Location = pos; label1.BackColor = Color.Transparent; }</code>
解決策 2: 設計時の機能強化
あるいは、ParentControlDesigner を継承するカスタム クラスを作成して、デザイン時の問題を解決します。
<code class="language-csharp">using System.ComponentModel; using System.Windows.Forms; using System.Windows.Forms.Design; // 添加对System.Design的引用 [Designer(typeof(ParentControlDesigner))] class PictureContainer : PictureBox {}</code>
説明
上記の方法でPictureBoxをコンテナコントロールとして設定すると、ラベルがPictureBoxの子コントロールとなり、その透明度がPictureBoxの上に正しく表示されます。
以上がC#でPictureBoxの上に透明なラベルを表示する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。