public void ResizeIfNeeded(PixelSize size) { using (_syncContext.EnsureLocked()) { if (_size != size) { _surfaceInterop.Resize(new UnmanagedMethods.POINT { X = size.Width, Y = size.Height }); _contentVisual.SetSize(new Vector2(size.Width, size.Height)); _size = size; } } }
public WinUICompositedWindow CreateWindow(IntPtr hWnd) { using var sc = _syncContext.EnsureLocked(); using var desktopTarget = _compositorDesktopInterop.CreateDesktopWindowTarget(hWnd, 0); using var target = desktopTarget.QueryInterface <ICompositionTarget>(); using var drawingSurface = _device.CreateDrawingSurface(new UnmanagedMethods.SIZE(), DirectXPixelFormat.B8G8R8A8UIntNormalized, DirectXAlphaMode.Premultiplied); using var surface = drawingSurface.QueryInterface <ICompositionSurface>(); using var surfaceInterop = drawingSurface.QueryInterface <ICompositionDrawingSurfaceInterop>(); using var surfaceBrush = _compositor.CreateSurfaceBrushWithSurface(surface); using var brush = surfaceBrush.QueryInterface <ICompositionBrush>(); using var spriteVisual = _compositor.CreateSpriteVisual(); spriteVisual.SetBrush(brush); using var visual = spriteVisual.QueryInterface <IVisual>(); using var visual2 = spriteVisual.QueryInterface <IVisual2>(); using var container = _compositor.CreateContainerVisual(); using var containerVisual = container.QueryInterface <IVisual>(); using var containerVisual2 = container.QueryInterface <IVisual2>(); containerVisual2.SetRelativeSizeAdjustment(new Vector2(1, 1)); using var containerChildren = container.Children; target.SetRoot(containerVisual); using var blur = CreateBlurVisual(); containerChildren.InsertAtTop(blur); containerChildren.InsertAtTop(visual); return(new WinUICompositedWindow(_syncContext, _compositor, _pumpLock, target, surfaceInterop, visual, blur)); }