将相机图像渲染到WPF图像控件

我有一个uEye相机,我以1000毫秒的间隔拍摄图像的快照,我想在WPF Image控制中像这样渲染它们

  Bitmap MyBitmap; // get geometry of uEye image buffer int width = 0, height = 0, bitspp = 0, pitch = 0, bytespp = 0; long imagesize = 0; m_uEye.InquireImageMem(m_pCurMem, GetImageID(m_pCurMem), ref width, ref height, ref bitspp, ref pitch); bytespp = (bitspp + 1) / 8; imagesize = width * height * bytespp; // image size in bytes // bulit a system bitmap MyBitmap = new Bitmap(width, height, PixelFormat.Format24bppRgb); // fill the system bitmap with the image data from the uEye SDK buffer BitmapData bd = MyBitmap.LockBits(new Rectangle(0, 0, width, height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb); m_uEye.CopyImageMem(m_pCurMem, GetImageID(m_pCurMem), bd.Scan0); MyBitmap.UnlockBits(bd); 

我试图以1秒的速率将这些位图放入Image控件。 我怎样才能让Bitmap出现在Image控件中并在我完成后立即处理它们以留下最小的内存占用成为一个优秀的小程序员:)?

在这里我们的方式(对我而言,它工作在200fps而不加载CPU(约5%)):

  private WriteableBitmap PrepareForRendering(VideoBuffer videoBuffer) { PixelFormat pixelFormat; if (videoBuffer.pixelFormat == PixFrmt.rgb24) { pixelFormat = PixelFormats.Rgb24; } else if (videoBuffer.pixelFormat == PixFrmt.bgra32) { pixelFormat = PixelFormats.Bgra32; } else if (videoBuffer.pixelFormat == PixFrmt.bgr24) { pixelFormat = PixelFormats.Bgr24; } else { throw new Exception("unsupported pixel format"); } var bitmap = new WriteableBitmap( videoBuffer.width, videoBuffer.height, 96, 96, pixelFormat, null ); _imgVIew.Source = bitmap; return bitmap; } private void DrawFrame(WriteableBitmap bitmap, VideoBuffer videoBuffer, double averangeFps) { VerifyAccess(); if (isPaused) { return; } bitmap.Lock(); try { using (var ptr = videoBuffer.Lock()) { bitmap.WritePixels( new Int32Rect(0, 0, videoBuffer.width, videoBuffer.height), ptr.value, videoBuffer.size, videoBuffer.stride, 0, 0 ); } } finally { bitmap.Unlock(); } fpsCaption.Text = averangeFps.ToString("F1"); }