【事前準備】
・フォームにictureBoxを貼り付け、DockプロパティをFillにする。
C:\aaabc.bmpを読み込み表示する。(32bppのBitmap)
また、読み込む際に、特定の色の値を編集する。
【ソースコード】
Imports System.Drawing.Imaging
Public Class Form1
Private bmp As New Bitmap(“C:\aaabc.bmp”)
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim bmpSr As BitmapData = bmp.LockBits(New Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadWrite, bmp.PixelFormat)
Dim ptrSr As IntPtr = bmpSr.Scan0
Dim bytesSr As Integer = bmpSr.Stride * bmp.Height
Dim rgbvaluesSr(bytesSr) As Byte
System.Runtime.InteropServices.Marshal.Copy(ptrSr, rgbvaluesSr, 0, bytesSr)
For i As Integer = 0 To rgbvaluesSr.Length – 4 Step 4
’rgbvaluesSr(i + 0) = Nothing ‘B
’rgbvaluesSr(i + 1) = Nothing ‘G
’rgbvaluesSr(i + 2) = Nothing ‘R
’rgbvaluesSr(i + 3) = Nothing ‘A
Next
System.Runtime.InteropServices.Marshal.Copy(rgbvaluesSr, 0, ptrSr, bytesSr)
bmp.UnlockBits(bmpSr)
End Sub
Private Sub Picture_Box(ByVal sender As Object, ByVal e As PaintEventArgs) Handles PictureBox1.Paint
e.Graphics.DrawImage(bmp, 0, 0, PictureBox1.Width, PictureBox1.Height)
End Sub
End Class
途中にある、For文の中のrgbvaluesSrシリーズのコメントを、
1行ずつ外してみてください。
それぞれ、画像のBlue , Green , Red , Alpha成分が0になったと思います。
元の画像
1行目のコメントを外すと、
青で描画してあるaの文字が消えると思います。
他の部分も同様にやってみて下さい。
【関連記事】
・Bitmap.LockBitsメソッド
・Byte配列について
・16色Bitmapを作成し描画する(LockBits使用)
システム開発のためのVB.NETプログラミング関係一覧に戻る