From fc81cd93a0095bc8c15198ea8afbd2fa7aa3421d Mon Sep 17 00:00:00 2001 From: lindexi Date: Sat, 24 Aug 2024 09:46:52 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BE=9D=E7=84=B6=E7=95=8C=E9=9D=A2=E4=B8=8D?= =?UTF-8?q?=E5=8F=AF=E8=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Workbench/HuremluhuhaChilejelawlai/Program.cs | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/Workbench/HuremluhuhaChilejelawlai/Program.cs b/Workbench/HuremluhuhaChilejelawlai/Program.cs index d226aa9f5..425d6f862 100644 --- a/Workbench/HuremluhuhaChilejelawlai/Program.cs +++ b/Workbench/HuremluhuhaChilejelawlai/Program.cs @@ -7,6 +7,8 @@ using Microsoft.Graphics.Canvas.UI.Composition; using Microsoft.Graphics.DirectX; using Microsoft.UI; +using Microsoft.UI.Composition; +using Microsoft.UI.Xaml.Hosting; namespace FinayfuweewawWakibawlu; @@ -70,7 +72,10 @@ protected override void OnLaunched(LaunchActivatedEventArgs args) { var canvasDevice = new CanvasDevice(); - var compositionGraphicsDevice = CanvasComposition.CreateCompositionGraphicsDevice(window.Compositor, canvasDevice); + var compositor = window.Compositor; + + var compositionGraphicsDevice = CanvasComposition.CreateCompositionGraphicsDevice(compositor, canvasDevice); + var compositionDrawingSurface = compositionGraphicsDevice.CreateDrawingSurface( new Windows.Foundation.Size(100, 100), DirectXPixelFormat.B8G8R8A8UIntNormalized, @@ -79,6 +84,18 @@ protected override void OnLaunched(LaunchActivatedEventArgs args) { drawingSession.FillRectangle(new Rect(10, 10, 10, 10), Windows.UI.Color.FromArgb(0xFF, 0x56, 0x56, 0x56)); } + + // 在 Win2d 渲染到平面完成之后,将这个平面作为一个画刷用于在之后的效果 + CompositionSurfaceBrush surfaceBrush = compositor.CreateSurfaceBrush(compositionDrawingSurface); + + SpriteVisual visual = compositor.CreateSpriteVisual(); + visual.Brush = surfaceBrush; + + Visual elementVisual = ElementCompositionPreview.GetElementVisual(window.Content); + if (elementVisual is ContainerVisual containerVisual) + { + containerVisual.Children.InsertAtTop(visual); + } }; window.Activate();