2010-06-01 3 views
0

저는 WPF 컨트롤에 표시 할 고속 카메라가 있습니다. 카메라의 SDK는 이미지 데이터를 나타내는 바이트 배열을 제공합니다. Canvas 컨트롤에서 이러한 이미지에 바인딩하는 가장 효율적인 방법을 찾고 있습니다. 이 이미지는 20 개의 이미지로 묶인 콜렉션에서 나란히 표시됩니다.WPF 2D 이미지 바인딩 성능

현재의 방법은 내가 원하는 방식대로 작동하지만 너무 많은 불필요한 변환이있는 것처럼 느껴집니다.

내가 처음과 같이 비트 맵에 내 바이트 배열로 변환 : 나는 몇 가지를 건너 뛰는거야

BitmapSource source = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(bmp.GetHbitmap(), IntPtr.Zero, System.Windows.Int32Rect.Empty, BitmapSizeOptions.FromWidthAndHeight(bmp.Width, bmp.Height)); 

참고 :

//note dataAdress is an IntPtr I get from the 3rd party SDK  
//i also have width and height ints 

bmp = new Bitmap(width, weight, PixelFormat.Format32bppRgb);   

BitmapData bData = bmp.LockBits(new Rectangle(0, 0, width, height), ImageLockMode.WriteOnly, PixelFormat.Format32bppRgb); 

int datasize = width * height * 4; 
byte[] rgbValues = new byte[datasize]; 

Marshal.Copy(dataAdress, rgbValues, 0, datasize); 
Marshal.Copy(rgbValues, 0, bData.Scan0, datasize); 
bmp.UnlockBits(bData); 

그럼 내가 BitmapSource는에 비트 맵을 변환하려면이 함수를 호출 가독성을 위해 폐기/정리. 이미지를 표시하려면 ImageSource를 바인딩 할 수 있도록 BitmapSource를 사용해야합니다. 이것이 XNA라면, Texture2Ds를 사용하고 이것은 날 것입니다. 나는 WPF의 토대가 DirectX를 사용하고 있기 때문에 그로스 비트 맵을 사용하는 것보다 더 좋은 방법이되어야한다고 생각한다.

아이디어가 있으십니까?

답변