public EVRDisplay()
        {
            var lTuple = D3D9Image.createD3D9Image();

            if (lTuple != null)
            {
                this.imageSource = lTuple.Item1;

                this.surface = lTuple.Item2;
            }

            if (this.imageSource != null)
            {
                var image = new System.Windows.Controls.Image();
                image.Stretch = System.Windows.Media.Stretch.Uniform;
                image.Source  = this.imageSource;
                this.AddChild(image);

                Width = this.imageSource.Width;

                Height = this.imageSource.Height;

                // To greatly reduce flickering we're only going to AddDirtyRect
                // when WPF is rendering.
                System.Windows.Media.CompositionTarget.Rendering += this.CompositionTargetRendering;
            }
        }
Пример #2
0
 private void LoadD3dImgByOpenCvMat(OpenCvSharp.Mat frame)
 {
     // 转码率
     //if (_tranformSize.Height != 0 && frame.Height != _tranformSize.Height)
     //{
     //    OpenCvSharp.Cv2.Resize(frame, _tranformFrame, _tranformSize);
     //    frame = _tranformFrame;
     //}
     if (_rect.Height != frame.Height)
     {
         _rect = new Int32Rect(0, 0, frame.Width, frame.Height);
     }
     //using System.Drawing.Bitmap bitmap = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(frame);
     //System.Drawing.Imaging.BitmapData data = bitmap.LockBits(
     //    new System.Drawing.Rectangle(0, 0, bitmap.Width, bitmap.Height),
     //    System.Drawing.Imaging.ImageLockMode.ReadOnly,
     //    System.Drawing.Imaging.PixelFormat.Format32bppArgb);
     Dispatcher.Invoke(() =>
     {
         if (_dImage == null)
         {
             _dImage     = new System.Windows.Interop.D3DImage(frame.Width, frame.Height);
             pImg.Source = _dImage;
         }
         _dImage.Lock();
         _dImage.AddDirtyRect(_rect);
         _dImage.SetBackBuffer(System.Windows.Interop.D3DResourceType.IDirect3DSurface9, frame.Data);
         _dImage.Unlock();
     });
     //bitmap.UnlockBits(data);
     //bitmap.Dispose();
 }