技術問題
[SDK]如何將影像資料轉換成 Bitmap 物件
一般而言, 光道視覺並不建議使用者將影像資料轉變成Bitmap格式, 因為不論是影像顯示或處理, 於編譯器的環境中皆能以OVK Framework的元件進行相關處理.
當然如果確有必要使用Bitmap, 光道視覺提供以下方式轉換(以下以VB .NET與C#為範例) :
以下為VB .NET範例
Dim i As Integer
Dim bmpobj As Bitmap
Dim pal As System.Drawing.Imaging.ColorPalette
'使用GetImagePtr獲得ActiveSurfaceHandle的影像指標,
'並產生Bitmap物件(沒有memory copy的動作, 效能極佳)
Dim p As IntPtr
p = AxAxAltairU1.GetImagePtr(AxAxAltairU1.ActiveSurfaceHandle, 0, 0)
bmpobj = New Bitmap(AxAxAltairU1.ImageWidth,
AxAxAltairU1.ImageHeight,
AxAxAltairU1.ImageWidth,
System.Drawing.Imaging.PixelFormat.Format8bppIndexed,
p)
'設定Bitmap調色盤為灰階調色盤
'(如果沒有正確設定, 顯示顏色會錯亂)
pal = bmpobj.Palette
For i = 0 To 255
pal.Entries(i) = Color.FromArgb(i, i, i)
Next
bmpobj.Palette = pal
'將Bitmap設定給PictureBox顯示
PictureBox1.Image = bmpobj
以上為VB .NET範例
以下為C#範例
IntPtr p;
Integer i;
Bitmap bmpobj;
System.Drawing.Imaging.ColorPalette pal;
p = AxAxAltairU1.GetImagePtr(AxAxAltairU1.ActiveSurfaceHandle, 0, 0);
bmpobj = New Bitmap(AxAxAltairU1.ImageWidth,
AxAxAltairU1.ImageHeight,
AxAxAltairU1.ImageWidth,
System.Drawing.Imaging.PixelFormat.Format8bppIndexed,
p);
//設定Bitmap調色盤為灰階調色盤
//(如果沒有正確設定, 顯示顏色會錯亂)
pal = bmpobj.Palette
for(i=0;i<=255;++i)
{
pal.Entries[i] = Color.FromArgb(255,i, i, i);
}
bmpobj.Palette = pal;
//將Bitmap設定給PictureBox顯示
PictureBox1.Image = bmpobj;
以上為C#範例