2009年8月10日 星期一

Silverlight 3中的bitmap API

SL3中的Bitmap API,是影像處理的基礎,它讓我們得以直接在記憶體中建立一個點陣圖畫布,使用的方法很簡單,直接透過Imaging底下的WriteableBitmap即可:

Dim wBitmap As New System.Windows.Media.Imaging.WriteableBitmap(…)

建構函式有三種呼叫方式,可隨您的需要使用:

WriteableBitmap(影像來源BitmapSource)
WriteableBitmap(寬Int32,高Int32)
WriteableBitmap(任何物件UIElement, Transform物件)

例如,底下的程式碼將會建立一張空白的畫布在記憶體中:

Dim wBitmap As New System.Windows.Media.Imaging.WriteableBitmap(640,480)

而WriteableBitmap物件的Pixels屬性則可以讓我們設定點陣圖的影像:

wBitmap.Pixels(y * wBitmap.PixelHeight + x) = pixel

而上面的Pixel則可以透過底下這樣的方式計算出來:

Dim brg As Byte() = New Byte(3) {}
'Blue, B
brg(0) = CByte(color.B)
'Green, G
brg(1) = CByte(color.G)
'Red, R
brg(2) = CByte(color.R)
'透明度
brg(3) = color.A
Dim pixel As Integer = BitConverter.ToInt32(brg, 0)

透過這樣的方式,您可以很輕易的建立出類似底下這樣的影像雜點效果:

沒有留言: