DOBON.NET プログラミング道: .NET Framework, VB.NET, C#, Visual Basic, Visual Studio, インストーラ, ...

PictureBox上のLabelの背景が透明にならない問題の解決法

PictureBoxコントロールの上に配置したLabelコントロールはBackColorプロパティをTransparentにしても透明になったようには見えません。これはLabelコントロールの親コントロールがフォームであり、フォームにあわせてLabelコントロールの背景が設定されるためです。

よってこの問題を解決するには、Labelの親コントロールをPictureBoxにすればよい訳です。

次の例では、Label1という名前のLabelコントロールの親コントロールをPictureBox1という名前のPictureBoxコントロールとし、さらにLabel1の位置を調節しています。(Label1の位置を調節している部分はおまけです。Label1の位置が適当でないと、Label1がPictureBox1からはみ出して、表示されなくなります。)

VB.NET
コードを隠すコードを選択
'Label1の親コントロールをPictureBox1とする
PictureBox1.Controls.Add(Label1)

'Label1の位置をPictureBox1内の位置に変更する
Label1.Top = Label1.Top - PictureBox1.Top
Label1.Left = Label1.Left - PictureBox1.Left
C#
コードを隠すコードを選択
//Label1の親コントロールをPictureBox1とする
PictureBox1.Controls.Add(Label1);

//Label1の位置をPictureBox1内の位置に変更する
Label1.Top = Label1.Top - PictureBox1.Top;
Label1.Left = Label1.Left - PictureBox1.Left;

別の理由で背景が透明にならない場合

上記のような理由以外に、BackColorプロパティをTransparentにしても透明にならない場合があります。例えば、コントロールのFlatStyleプロパティがSystemになっている場合が相当します。LabelコントロールのFlatStyleプロパティがSystemになっているならば、別の値に変更してください。

  • 履歴:
  • 2007/6/13 FlatStyleプロパティがSystemの時の問題を追加。

注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。

  • .NET Tipsをご利用いただく際は、注意事項をお守りください。