private void Init() { _compositor = Window.Current.Compositor; _device = new Direct3D11Device(); _deviceContext = _device.ImmediateContext; _multithread = _device.Multithread; _multithread.IsMultithreadProtected = true; _decoder = new ImageDecoder(); _compositionGraphicsDevice = CompositionGraphics.CreateCompositionGraphicsDevice(_compositor, _device); _root = _compositor.CreateContainerVisual(); _root.RelativeSizeAdjustment = Vector2.One; ElementCompositionPreview.SetElementChildVisual(this, _root); _imageSurface = _compositionGraphicsDevice.CreateDrawingSurface( new Size(1, 1), DirectXPixelFormat.B8G8R8A8UIntNormalized, DirectXAlphaMode.Premultiplied); _imageBrush = _compositor.CreateSurfaceBrush(_imageSurface); _imageBrush.HorizontalAlignmentRatio = 0; _imageBrush.VerticalAlignmentRatio = 0; _imageBrush.Stretch = CompositionStretch.None; _imageBrush.BitmapInterpolationMode = CompositionBitmapInterpolationMode.NearestNeighbor; _imageVisual = _compositor.CreateSpriteVisual(); _imageVisual.RelativeSizeAdjustment = Vector2.One; _imageVisual.Brush = _imageBrush; _root.Children.InsertAtTop(_imageVisual); _captureBrush = _compositor.CreateSurfaceBrush(); _captureVisual = _compositor.CreateSpriteVisual(); _captureVisual.RelativeSizeAdjustment = Vector2.One; _captureVisual.Brush = _captureBrush; _root.Children.InsertAtBottom(_captureVisual); _swapChain = new SwapChain( _device, DirectXPixelFormat.B8G8R8A8UIntNormalized, 2, new SizeInt32() { Width = 1, Height = 1 }); var surface = _swapChain.CreateSurface(_compositor); _captureBrush.Surface = surface; }