public async void PrepareEntranceEffect() { try { Compositor BaseCompositor = ElementCompositionPreview.GetElementVisual(BasePage).Compositor; Vector2 WindowSize = new Vector2(Convert.ToSingle(Window.Current.Bounds.Width), Convert.ToSingle(Window.Current.Bounds.Height)); ContainerVisual Visual = BaseCompositor.CreateContainerVisual(); Visual.Size = WindowSize; Visual.CenterPoint = new Vector3(WindowSize.X, WindowSize.Y, 0) * 0.5f; ElementCompositionPreview.SetElementChildVisual(BasePage, Visual); SpriteVisual BackgroundSprite = BaseCompositor.CreateSpriteVisual(); BackgroundSprite.Size = WindowSize; BackgroundSprite.Brush = BaseCompositor.CreateColorBrush((Color)Application.Current.Resources["SystemAccentColor"]); Visual.Children.InsertAtBottom(BackgroundSprite); CompositionDrawingSurface ImageDrawingSurface = await SurfaceLoader.LoadFromUri(new Uri("ms-appx:///Assets/SplashScreen.png")); SpriteVisual ImageSprite = BaseCompositor.CreateSpriteVisual(); ImageSprite.Brush = BaseCompositor.CreateSurfaceBrush(ImageDrawingSurface); ImageSprite.Offset = new Vector3(Convert.ToSingle(SplashScreenRect.X), Convert.ToSingle(SplashScreenRect.Y), 0f); ImageSprite.Size = new Vector2(Convert.ToSingle(SplashScreenRect.Width), Convert.ToSingle(SplashScreenRect.Height)); Visual.Children.InsertAtTop(ImageSprite); } catch (Exception ex) { Debug.WriteLine($"Error in PrepareEntranceEffect, message:{ex.Message}"); } }
public async void PrepareEntranceEffect() { Compositor compositor = ElementCompositionPreview.GetElementVisual(BasePageObject).Compositor; Vector2 windowSize = new Vector2((float)Window.Current.Bounds.Width, (float)Window.Current.Bounds.Height); //1.创建ContainerVisual实例填充背景色和图片; //2.设置中心缩放 ContainerVisual cv = compositor.CreateContainerVisual(); cv.Size = windowSize; cv.CenterPoint = new Vector3(windowSize.X, windowSize.Y, 0) * 0.5f; ElementCompositionPreview.SetElementChildVisual(BasePageObject, cv); //创建sprite的背景色为APP的主题色 SpriteVisual backgroundSprite = compositor.CreateSpriteVisual(); backgroundSprite.Size = windowSize; backgroundSprite.Brush = compositor.CreateColorBrush((Color)Application.Current.Resources["SystemAccentColor"]); cv.Children.InsertAtBottom(backgroundSprite); //创建包含初始屏图像的sprite的尺寸和位置 CompositionDrawingSurface surface = await SurfaceLoader.LoadFromUri(new Uri("ms-appx:///Assets/SplashScreen.png")); SpriteVisual imageSprite = compositor.CreateSpriteVisual(); imageSprite.Brush = compositor.CreateSurfaceBrush(surface); imageSprite.Offset = new Vector3((float)SplashScreenRect.X, (float)SplashScreenRect.Y, 0f); imageSprite.Size = new Vector2((float)SplashScreenRect.Width, (float)SplashScreenRect.Height); cv.Children.InsertAtTop(imageSprite); }