Beispiel #1
0
        public void Capture(IStreamEncoder encoder)
        {
            if (!RetrieveFrame())
            {
                return;
            }

            try
            {
                var mapSource = _captureDevice.ImmediateContext.MapSubresource(_desktopImageTexture, 0, MapMode.Read, MapFlags.None);
                try
                {
                    // Get the desktop capture texture
                    encoder.CodeImage(mapSource.DataPointer, PixelFormat.Format32bppArgb);
                }
                finally
                {
                    _captureDevice.ImmediateContext.UnmapSubresource(_desktopImageTexture, 0);
                }
            }
            finally
            {
                ReleaseFrame();
            }
        }
Beispiel #2
0
        public void Capture(IStreamEncoder encoder)
        {
            using (var graphics = Graphics.FromImage(_currentImage))
            {
                var deviceContext = graphics.GetHdc();
                NativeMethods.BitBlt(deviceContext, 0, 0, _screenBounds.Width, _screenBounds.Height, _screenDeviceContext, _screenBounds.X,
                                     _screenBounds.Y, SRCCOPY);
                graphics.ReleaseHdc(deviceContext);

                var bitmapData = _currentImage.LockBits(new Rectangle(0, 0, _currentImage.Width, _currentImage.Height), ImageLockMode.ReadOnly,
                                                        _currentImage.PixelFormat);

                try
                {
                    encoder.CodeImage(bitmapData.Scan0, bitmapData.PixelFormat);
                }
                finally
                {
                    _currentImage.UnlockBits(bitmapData);
                }
            }
        }