.NET TIPS

PictureBoxコントロール上に文字を表示するには?

デジタルアドバンテージ
2004/10/22

 Windowsアプリケーションでフォーム上に文字列を表示するには、Labelコントロールを利用するのがお手軽である。このとき、Labelコントロールの背景色を指定するBackColorプロパティに「Transparent」を設定することにより、文字以外の部分を透明にできる。これにより、文字のストローク部分のみの表示が可能となる。

 しかし、そのようなLabelコントロールを、画像を表示しているPictureBoxコントロール上に配置しても文字の背景が正しく透明にならず、次のような表示となってしまうことがある。

Labelコントロールの背景が正しく透明になっていない例
PictureBoxコントロール上に配置したLabelコントロールの背景が正しく透明にならないのは、Labelコントロールの親コントロールがフォームとなっているためである。

 これは、Labelコントロールの親コントロールがフォームとなっているためだ。つまり、背景色をTransparentに設定した場合には、親コントロールに対して透明となるのである。この例の場合には、Labelコントロールの背景色は、フォームの背景色により描画されていることになる(これはフォームの背景色を変更すれば確認できる)。

 Labelコントロールの背景をPictureBoxコントロールに対して透明にするには、Labelコントロールの親コントロールを、フォームではなくPictureBoxコントロールに設定すればよい。これはC#やVB.NETでは次のようなコードにより記述できる。

Label1.Parent = PictureBox1

 Parentプロパティは、親コントロールを示すプロパティである(Controlクラス(System.Windows.Forms名前空間)から継承したプロパティ)。このコードをフォームのLoadイベント・ハンドラ(Visual Studio .NETにより自動生成されるコードではForm1_Loadメソッド)などの中に記述しておけばよい。これによりプログラムの実行画面は次のようになる。

Labelコントロールの背景が正しく透明になっている例
PictureBoxコントロールをLabelコントロールの親コントロールとして設定することにより、Labelコントロールの背景がPictureBoxコントロールの画像で描画される。

 Visual Studio .NETのWindowsフォーム・デザイナにより自動生成されるコードでは、フォームのControlsプロパティのAddメソッドにより、フォームとフォーム上に配置したコントロールが関連付けられるが、Parentプロパティの設定が行われるのもこのときである。End of Article

カテゴリ:Windowsフォーム 処理対象:Labelコントロール
カテゴリ:Windowsフォーム 処理対象:PictureBoxコントロール
使用ライブラリ:Controlクラス(System.Windows.Forms名前空間)
 
この記事と関連性の高い別の.NET TIPS
DataGridコントロールで入力中のセルをハイライト表示するには?
Windowsフォームで四角を描くには?
コンソール・アプリケーションで文字色や背景色を変えるには?
文字列や画像を無効状態で描画するには?
Windowsフォームで円を描くには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」

TechTargetジャパン

Insider.NET フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ

- PR -
@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH