Symfoware

Symfowareについての考察blog

C# 透過pngをレイヤーとして表示するPictureBoxを作成する

C# でユーザーコントロール作成の勉強がてら、透過pngをレイヤーとして
表示するカスタムPictureBoxを作ってみます。

ユーザーコントロール



プロジェクトを右クリックして[追加] - [ユーザーコントロール]を選択。

892_01.png

「ユーザーコントロール」を新規作成します。
今回は「LayerImageBox」というコントロールを作成することにしました。

892_02.png

作成してビルドすると、ツールボックスの候補に表示されます。
これでGUIからFormに配置できます。

892_03.png



プログラム



作成したコントロールはこんな感じになりました。
レイヤーとして使用するPictureBoxは
BackColor = Color.Transparent;
を指定して透過しておきます。


  1. using System;
  2. using System.Drawing;
  3. using System.Windows.Forms;
  4. namespace WindowsFormsApp1
  5. {
  6.     public partial class LayerImageBox : PictureBox
  7.     {
  8.         private PictureBox _layer = new PictureBox();
  9.         public Image LayerImage
  10.         {
  11.             get
  12.             {
  13.                 return _layer.Image;
  14.             }
  15.             set
  16.             {
  17.                 _layer.Image = value;
  18.             }
  19.         }
  20.         public LayerImageBox()
  21.         {
  22.             InitializeComponent();
  23.             _layer.BackColor = Color.Transparent;
  24.             _layer.Parent = this;
  25.             _layer.Size = Size;
  26.         }
  27.         protected override void OnSizeChanged(EventArgs e)
  28.         {
  29.             base.OnSizeChanged(e);
  30.             _layer.Size = Size;
  31.         }
  32.     }
  33. }



呼び出すFormのソース。


  1. using System.Drawing;
  2. using System.Windows.Forms;
  3. namespace WindowsFormsApp1
  4. {
  5.     public partial class Form1 : Form
  6.     {
  7.         public Form1()
  8.         {
  9.             InitializeComponent();
  10.             layerImageBox1.Image = new Bitmap(@"C:\dev\lena.jpg");
  11.             layerImageBox1.LayerImage = new Bitmap(@"C:\dev\ribon.png");
  12.         }
  13.     }
  14. }



画像はこちらからお借りしました。
リボン付花形金メダル透過PNG

実行結果

892_04.png

ユーザーコントロール、意外とお手軽に作成できました。


【参考URL】
方法 : 既存の Windows フォーム コントロールから継承する


関連記事

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2018/06/16(土) 18:56:47|
  2. 備忘録
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<.NET Core 2でBitmapオブジェクトを使用する | ホーム | Python + OpenCV3 指定領域のノイズを修復する(Inpaint)>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
https://symfoware.blog.fc2.com/tb.php/2193-bcaca629
この記事にトラックバックする(FC2ブログユーザー)