Entries

画像の透明化サンプル

画像の透明化の方法は画像ファイルの透明化で紹介したようにすればできます。
今回はこれを実際にサンプルで紹介しておきます。
まず、適当な画像ファイルを用意しておきます。
(↓これはJPEGファイルにしていますが、実際はBMPファイルの方がベターです)
透明画像
黒い背景と青の円が描かれている画像ですね。
これをフォームに表示させます。

Public Class Form1
  Dim img As Bitmap = New Bitmap("c:\clear.bmp")

  Public Sub New( )
   ' この呼び出しは、Windows フォーム デザイナで必要です。
   InitializeComponent( )

   ' InitializeComponent( ) 呼び出しの後で初期化を追加します。
   Me.SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.UserPaint Or ControlStyles.OptimizedDoubleBuffer, True)
  End Sub

  Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
   Dim g As Graphics = e.Graphics
   g.DrawImage(img, 0, 0)
   Me.Invalidate( )
  End Sub
End Class

BitMap型のフィールドimgにBitMapオブジェクトを参照させておきます。
今回の例ではCドライブの直下にあるclear.bmpを指定していますが、リソースにある画像を使いたいのであれば、My.Resources.リソース名を指定してください。

PictureBoxではチラつきが生じますのでFormに直接描画させます。
フォームの生成時(Newメソッド)にSetStyleでダブルバッファを有効にしておきます。

あとは、Paitメソッドを作成します。
アニメーションはありませんので、描画して強制再描画をさせて無限ループ。
実行すると↓のような感じ。
透明画像
黒い背景の中に青の円の画像が表示されます。
この画像の黒の背景を透明化するために、
g.DrawImage(img,0,0)より前にimg.MakeTransparent(Color.Black)を記述します。

Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
  Dim g As Graphics = e.Graphics
  img.MakeTransparent(Color.Black)
  g.DrawImage(img, 0, 0)
  Me.Invalidate()
End Sub

これで実行すると↓のように表示されます。
透明画像

今回の画像は背景が黒ですから、Color.Blackと指定して透明化させています。
あらかじめ用意されている色ではなく、オリジナルの色を指定するのであれば、
Color.FromArgb(赤,緑,青)を使うといいでしょう。
ただし、パラメータは16進数ではなく10進数での指定になります。

0件のコメント

コメントの投稿

新規
投稿した内容は管理者にだけ閲覧出来ます

1件のトラックバック

[T1] picturebox+c-でつながるブログリング

picturebox+cに関するブログをまとめています。
トラックバックURL
http://hinagis.blog33.fc2.com/tb.php/20-8cdcd098
この記事に対してトラックバックを送信する(FC2ブログユーザー)

Appendix

最新記事

検索フォーム

月別アーカイブ

売れ筋ランキング

お楽しみ用

アニメグッズ

プロフィール

Author:ひなぎ
VB2005&2008でゲーム作成中

FC2カウンター

Powered By FC2ブログ

今すぐブログを作ろう!

Powered By FC2ブログ

FC2ブログ 一戸建て