素人がゲームプログラム作成に挑戦
ゲームを買うお金がないから、ゲームを作るというゲームに挑戦!言語はVisual Basic(VB)をメインにC++、C#、Javaは参考程度
Entries
画像の透明化サンプル
- ジャンル : コンピュータ
- スレッドテーマ : Visual Basic
画像の透明化の方法は画像ファイルの透明化で紹介したようにすればできます。
今回はこれを実際にサンプルで紹介しておきます。
まず、適当な画像ファイルを用意しておきます。
(↓これはJPEGファイルにしていますが、実際はBMPファイルの方がベターです)

黒い背景と青の円が描かれている画像ですね。
これをフォームに表示させます。
BitMap型のフィールドimgにBitMapオブジェクトを参照させておきます。
今回の例ではCドライブの直下にあるclear.bmpを指定していますが、リソースにある画像を使いたいのであれば、My.Resources.リソース名を指定してください。
PictureBoxではチラつきが生じますのでFormに直接描画させます。
フォームの生成時(Newメソッド)にSetStyleでダブルバッファを有効にしておきます。
あとは、Paitメソッドを作成します。
アニメーションはありませんので、描画して強制再描画をさせて無限ループ。
実行すると↓のような感じ。

黒い背景の中に青の円の画像が表示されます。
この画像の黒の背景を透明化するために、
g.DrawImage(img,0,0)より前にimg.MakeTransparent(Color.Black)を記述します。
これで実行すると↓のように表示されます。

今回の画像は背景が黒ですから、Color.Blackと指定して透明化させています。
あらかじめ用意されている色ではなく、オリジナルの色を指定するのであれば、
Color.FromArgb(赤,緑,青)を使うといいでしょう。
ただし、パラメータは16進数ではなく10進数での指定になります。
今回はこれを実際にサンプルで紹介しておきます。
まず、適当な画像ファイルを用意しておきます。
(↓これは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
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
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件のトラックバック
- トラックバックURL
- http://hinagis.blog33.fc2.com/tb.php/20-8cdcd098
- この記事に対してトラックバックを送信する(FC2ブログユーザー)



