public UniversalElement(object sender) { Element = sender as FrameworkElement; ElementVisual = ElementCompositionPreview.GetElementVisual(Element); Masker = CompositionMaskFactory.GetCompositionMaskGenerator(Compositor); }
private async void BusyIndicator_Loaded(object sender, Windows.UI.Xaml.RoutedEventArgs e) { compositor = ElementCompositionPreview.GetElementVisual(this).Compositor; generator = CompositionMaskFactory.GetCompositionMaskGenerator(compositor); container = compositor.CreateContainerVisual(); container.Size = new Vector2(60, 60); container.Offset = new Vector3(-30, -30, 0); float size = 30; var color = Color.FromArgb(255, 0xD2, 0x42, 0x29); ellipse_0 = await CreateEllipseVisual(color, size, size); ellipse_1 = await CreateEllipseVisual(color, size, size); ellipse_2 = await CreateEllipseVisual(color, size, size); ellipse_3 = await CreateEllipseVisual(color, size, size); container.Children.InsertAtBottom(ellipse_0); container.Children.InsertAtBottom(ellipse_1); container.Children.InsertAtBottom(ellipse_2); container.Children.InsertAtBottom(ellipse_3); ElementCompositionPreview.SetElementChildVisual(this, container); animations.Add(AnimateScale(ellipse_0)); animations.Add(AnimateScale(ellipse_1, true)); animations.Add(AnimateScale(ellipse_2)); animations.Add(AnimateScale(ellipse_3, true)); animations.Add(AnimateRotation(ellipse_0, 0)); animations.Add(AnimateRotation(ellipse_1, 0.25f * (float)Math.PI)); animations.Add(AnimateRotation(ellipse_2, 0.5f * (float)Math.PI)); animations.Add(AnimateRotation(ellipse_3, 0.75f * (float)Math.PI)); IsReady = true; }
private async void MainPage_Loaded(object sender, RoutedEventArgs e) { _compositor = ElementCompositionPreview.GetElementVisual(this).Compositor; _generator = CompositionMaskFactory.GetCompositionMaskGenerator(_compositor); _backdropBrush = _compositor.CreateBackdropBrush(); //Create the visual _visual = _compositor.CreateSpriteVisual(); _visual.Size = new Vector2(400, 400); _visual.Offset = new Vector3(200, 0, 0); // Create the combined geometry var ellipse1 = CanvasGeometry.CreateEllipse(_generator.Device, 200, 200, 150, 75); var ellipse2 = CanvasGeometry.CreateEllipse(_generator.Device, 200, 200, 75, 150); _combinedGeometry = ellipse1.CombineWith(ellipse2, Matrix3x2.Identity, CanvasGeometryCombine.Union); // Create the CompositionMask _compositionMask = await _generator.CreateMaskAsync(_visual.Size.ToSize(), _combinedGeometry); // Create SurfaceBrush from CompositionMask var mask = _compositor.CreateSurfaceBrush(_compositionMask.Surface); var source1 = _compositor.CreateColorBrush(Colors.Blue); // Create mask brush var maskBrush = _compositor.CreateMaskBrush(); maskBrush.Mask = mask; maskBrush.Source = source1; _visual.Brush = maskBrush; ElementCompositionPreview.SetElementChildVisual(CanvasCtrl, _visual); var container = _compositor.CreateContainerVisual(); container.Size = new Vector2(1000, 1000); // Background visual var bgVisual = _compositor.CreateSpriteVisual(); bgVisual.Size = new Vector2(200, 200); bgVisual.Offset = new Vector3(300, 100, 0); bgVisual.Brush = source1; container.Children.InsertAtTop(bgVisual); // Animated Visual _animatedVisual = _compositor.CreateSpriteVisual(); _animatedVisual.Size = new Vector2(400, 400); _animatedVisual.Offset = new Vector3(200, 0, 0); // Create the Excluded geometry _outerGeometry = CanvasGeometry.CreateRectangle(_generator.Device, 0, 0, 400, 400); var excludedGeometry = _outerGeometry.CombineWith(_combinedGeometry, Matrix3x2.Identity, CanvasGeometryCombine.Exclude); // Create the CompositionMask _animatedCompositionMask = await _generator.CreateMaskAsync(_animatedVisual.Size.ToSize(), excludedGeometry); //// Create SurfaceBrush from CompositionMask //var animatedMask = _compositor.CreateSurfaceBrush(_animatedCompositionMask.Surface); //var source2 = _compositor.CreateColorBrush(Colors.Red); //// Create mask brush //var animatedMaskBrush = _compositor.CreateMaskBrush(); //animatedMaskBrush.Mask = animatedMask; //animatedMaskBrush.Source = source2; _animatedVisual.Brush = _compositor.CreateMaskedBackdropBrush(_animatedCompositionMask, Color.FromArgb(240, 232, 232, 232), 20f, _backdropBrush); container.Children.InsertAtTop(_animatedVisual); ElementCompositionPreview.SetElementChildVisual(AnimatedCanvasCtrl, container); }