.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プロパティの設定が行われるのもこのときである。
カテゴリ:Windowsフォーム 処理対象:Labelコントロール カテゴリ:Windowsフォーム 処理対象:PictureBoxコントロール 使用ライブラリ:Controlクラス(System.Windows.Forms名前空間) |
「.NET TIPS」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|