public ShadowTextControl()
        {
            _maskBrush = Compositor.CreateMaskBrush();
            var surfaceTextBrush = CreateBrush();

            _maskBrush.Source = surfaceTextBrush;
        }
Пример #2
0
        private void SamplePage_Loaded(object sender, Windows.UI.Xaml.RoutedEventArgs e)
        {
            // Get backing visual from shadow container and interop compositor
            _shadowContainer = ElementCompositionPreview.GetElementVisual(ShadowContainer);
            _compositor      = _shadowContainer.Compositor;

            // Get CompositionImage, its sprite visual
            _image       = VisualTreeHelperExtensions.GetFirstDescendantOfType <CompositionImage>(ShadowContainer);
            _imageVisual = _image.SpriteVisual;

            // Load mask asset onto surface using helpers in SamplesCommon
            _imageLoader      = ImageLoaderFactory.CreateImageLoader(_compositor);
            _imageMaskSurface = _imageLoader.CreateCircleSurface(200, Colors.White);

            // Create surface brush for mask
            CompositionSurfaceBrush mask = _compositor.CreateSurfaceBrush();

            mask.Surface = _imageMaskSurface.Surface;

            // Get surface brush from composition image
            CompositionSurfaceBrush source = _image.SurfaceBrush as CompositionSurfaceBrush;

            // Create mask brush for toggle mask functionality
            _maskBrush        = _compositor.CreateMaskBrush();
            _maskBrush.Mask   = mask;
            _maskBrush.Source = source;

            // Initialize toggle mask
            _isMaskEnabled = false;
        }
        private void SamplePage_Loaded(object sender, Windows.UI.Xaml.RoutedEventArgs e)
        {
            // Get backing visual from shadow container and interop compositor
            _shadowContainer = ElementCompositionPreview.GetElementVisual(ShadowContainer);
            _compositor = _shadowContainer.Compositor;

            // Get CompositionImage, its sprite visual
            _image = VisualTreeHelperExtensions.GetFirstDescendantOfType<CompositionImage>(ShadowContainer);
            _imageVisual = _image.SpriteVisual;

            // Load mask asset onto surface using helpers in SamplesCommon
            _imageLoader = ImageLoaderFactory.CreateImageLoader(_compositor);
            _imageMaskSurface = _imageLoader.CreateCircleSurface(200, Colors.White);

            // Create surface brush for mask
            CompositionSurfaceBrush mask = _compositor.CreateSurfaceBrush();
            mask.Surface = _imageMaskSurface.Surface;
            
            // Get surface brush from composition image
            CompositionSurfaceBrush source = _image.SurfaceBrush as CompositionSurfaceBrush;

            // Create mask brush for toggle mask functionality
            _maskBrush = _compositor.CreateMaskBrush();
            _maskBrush.Mask = mask;
            _maskBrush.Source = source;

            // Initialize toggle mask
            _isMaskEnabled = false;
        }
Пример #4
0
 public OutlinePanel() : base()
 {
     this.DefaultStyleKey = typeof(OutlinePanel);
     _compositor          = ElementCompositionPreview.GetElementVisual(this).Compositor;
     _maskBrush           = _compositor.CreateMaskBrush();
     Visual.Brush         = _maskBrush;
     _maskBrushSource     = _compositor.CreateColorBrush(Color);
 }
Пример #5
0
        private SpriteVisual CreateMaskSprite(Rect overlay, CompositionMaskBrush maskbrush)
        {
            var maskSprite = _compositor.CreateSpriteVisual();

            maskSprite.Size   = new Vector2((float)overlay.Width, (float)overlay.Height);
            maskSprite.Offset = new Vector3((float)overlay.X, (float)overlay.Y, 0);
            maskSprite.Brush  = maskbrush; // paint it with the maskbrush
            return(maskSprite);
        }
Пример #6
0
        public MaskNineGridScenario(Compositor compositor, CompositionSurfaceBrush surfaceBrush, string text)
        {
            CompositionNineGridBrush brush = compositor.CreateNineGridBrush();

            brush.Source = surfaceBrush;
            brush.SetInsets(60.0f);
            brush.IsCenterHollow = true;

            _nineGridMaskBrush        = compositor.CreateMaskBrush();
            _nineGridMaskBrush.Mask   = brush;
            _nineGridMaskBrush.Source = compositor.CreateColorBrush(Colors.Black);

            _text = text;
        }
        private void SamplePage_Loaded(object sender, Windows.UI.Xaml.RoutedEventArgs e)
        {
            // Get backing visual from shadow container and interop compositor
            _shadowContainer = ElementCompositionPreview.GetElementVisual(ShadowContainer);
            _compositor      = _shadowContainer.Compositor;

            // Get CompositionImage, its sprite visual
            _image       = VisualTreeHelperExtensions.GetFirstDescendantOfType <CompositionImage>(ShadowContainer);
            _imageVisual = _image.SpriteVisual;

            // Add drop shadow to image visual
            _shadow             = _compositor.CreateDropShadow();
            _imageVisual.Shadow = _shadow;

            // Initialize sliders to shadow defaults - with the exception of offset
            BlurRadiusSlider.Value = _shadow.BlurRadius;    //defaults to 9.0f
            OffsetXSlider.Value    = _shadow.Offset.X;      //defaults to 0
            OffsetYSlider.Value    = _shadow.Offset.Y;      //defaults to 0
            RedSlider.Value        = _shadow.Color.R;       //defaults to 0 (black.R)
            GreenSlider.Value      = _shadow.Color.G;       //defaults to 0 (black.G)
            BlueSlider.Value       = _shadow.Color.B;       //defaults to 0 (black.B)

            // Load mask asset onto surface using helpers in SamplesCommon
            _imageLoader      = ImageLoaderFactory.CreateImageLoader(_compositor);
            _imageMaskSurface = _imageLoader.CreateManagedSurfaceFromUri(new Uri("ms-appx:///Assets/CircleMask.png"));

            // Create surface brush for mask
            CompositionSurfaceBrush mask = _compositor.CreateSurfaceBrush();

            mask.Surface = _imageMaskSurface.Surface;

            // Get surface brush from composition image
            CompositionSurfaceBrush source = _image.SurfaceBrush as CompositionSurfaceBrush;

            // Create mask brush for toggle mask functionality
            _maskBrush        = _compositor.CreateMaskBrush();
            _maskBrush.Mask   = mask;
            _maskBrush.Source = source;

            // Initialize toggle mask and animation to false
            _isMaskEnabled      = false;
            _isAnimationEnabled = false;
        }
        private void SamplePage_Loaded(object sender, Windows.UI.Xaml.RoutedEventArgs e)
        {
            // Get backing visual from shadow container and interop compositor
            _shadowContainer = ElementCompositionPreview.GetElementVisual(ShadowContainer);
            _compositor = _shadowContainer.Compositor;

            // Get CompositionImage, its sprite visual
            _image = VisualTreeHelperExtensions.GetFirstDescendantOfType<CompositionImage>(ShadowContainer);
            _imageVisual = _image.SpriteVisual;
           
            // Add drop shadow to image visual
            _shadow = _compositor.CreateDropShadow();
            _imageVisual.Shadow = _shadow;

            // Initialize sliders to shadow defaults - with the exception of offset
            BlurRadiusSlider.Value  = _shadow.BlurRadius;   //defaults to 9.0f
            OffsetXSlider.Value     = _shadow.Offset.X;     //defaults to 0
            OffsetYSlider.Value     = _shadow.Offset.Y;     //defaults to 0
            RedSlider.Value         = _shadow.Color.R;      //defaults to 0 (black.R)
            GreenSlider.Value       = _shadow.Color.G;      //defaults to 0 (black.G) 
            BlueSlider.Value        = _shadow.Color.B;      //defaults to 0 (black.B) 

            // Load mask asset onto surface using helpers in SamplesCommon
            _imageLoader = ImageLoaderFactory.CreateImageLoader(_compositor);
            _imageMaskSurface = _imageLoader.CreateManagedSurfaceFromUri(new Uri("ms-appx:///Assets/CircleMask.png"));

            // Create surface brush for mask
            CompositionSurfaceBrush mask = _compositor.CreateSurfaceBrush();
            mask.Surface = _imageMaskSurface.Surface;
            
            // Get surface brush from composition image
            CompositionSurfaceBrush source = _image.SurfaceBrush as CompositionSurfaceBrush;

            // Create mask brush for toggle mask functionality
            _maskBrush = _compositor.CreateMaskBrush();
            _maskBrush.Mask = mask;
            _maskBrush.Source = source;

            // Initialize toggle mask and animation to false
            _isMaskEnabled = false;
            _isAnimationEnabled = false;
          
        }
        private void InitializeView(NativeRatingView view)
        {
            Windows.UI.Xaml.Media.CompositionTarget.Rendering += new EventHandler <object>(DrawRating);
            ratings = new List <SpriteVisual>();

            var hostVisual = ElementCompositionPreview.GetElementVisual(this);

            root = hostVisual.Compositor.CreateContainerVisual();
            ElementCompositionPreview.SetElementChildVisual(this, root);
            compositor = root.Compositor;

            var height          = view.Height;
            var width           = view.Width;
            var spaceForTicks   = width * 0.6;
            var spaceForMargins = width - spaceForTicks;

            var tickWidth  = (float)(spaceForTicks / view.GetMaxRating);
            var tickHeight = (float)(height * 0.6);

            var margin = ((spaceForMargins / (Element.GetMaxRating + 1)));

            float space   = (float)margin;
            float yOffset = (((float)height - tickHeight) / 2);

            brushSelected   = CreateMaskBrush((int)tickWidth, (int)tickHeight, Element.RatingColor.ToWindowsColor());
            brushUnselected = CreateMaskBrush((int)tickWidth, (int)tickHeight, Windows.UI.Color.FromArgb(80, 120, 117, 108));

            for (int i = 0; i < view.GetMaxRating; i++)
            {
                tick        = compositor.CreateSpriteVisual();
                tick.Size   = new Vector2(tickWidth, tickHeight);
                tick.Offset = new Vector3(space, yOffset, 0);
                space      += tickWidth + (float)margin;
                root.Children.InsertAtTop(tick);
                ratings.Add(tick);
            }
        }
        /// <summary>
        /// Updates the effects applied and visuals shown based on information retrieved from
        /// calling the capabilities API
        /// </summary>
        private void UpdateAlbumArt()
        {
            if (_activeCapabilityWrapper.EffectsSupported)
            {
                //
                // If effects are supported, add effects to the background image and
                // add a masked circle image in the center for better visual appearance.
                //

                if (!_containsCircleImage)
                {
                    // Create circle mask
                    _circleMaskSurface = ImageLoader.Instance.LoadCircle(200, Colors.White);

                    // Create image visual to use as the circle-masked center image
                    _circleImageVisual      = _compositor.CreateSpriteVisual();
                    _circleImageVisual.Size = new Vector2((float)ImageCanvas.ActualWidth / 2, (float)ImageCanvas.ActualHeight / 2);
                    var xOffset = (float)(ImageCanvas.ActualWidth / 2 - _circleImageVisual.Size.X / 2);
                    var yOffset = (float)(ImageCanvas.ActualHeight / 2 - _circleImageVisual.Size.Y / 2);
                    _circleImageVisual.Offset = new Vector3(xOffset, yOffset, 0);

                    // Apply mask to visual
                    CompositionMaskBrush maskBrush = _compositor.CreateMaskBrush();
                    maskBrush.Source = _surface.Brush;
                    maskBrush.Mask   = _circleMaskSurface.Brush;

                    _circleImageVisual.Brush = maskBrush;

                    _imageContainer.Children.InsertAtTop(_circleImageVisual);
                    _containsCircleImage = true;
                }

                //
                // Create saturation effect, which will be either used alone if effects are slow, or chained
                // with blur if effects are fast
                //
                var saturationEffect = new SaturationEffect
                {
                    Saturation = 0.3f,
                    Source     = new CompositionEffectSourceParameter("SaturationSource")
                };

                if (_activeCapabilityWrapper.EffectsFast)
                {
                    // Create blur effect and chain with saturation effect
                    GaussianBlurEffect chainedEffect = new GaussianBlurEffect()
                    {
                        Name         = "Blur",
                        Source       = saturationEffect, //takes saturation effect as input
                        BlurAmount   = 6.0f,
                        BorderMode   = EffectBorderMode.Hard,
                        Optimization = EffectOptimization.Balanced
                    };

                    CompositionEffectFactory chainedEffectFactory = _compositor.CreateEffectFactory(chainedEffect);
                    CompositionEffectBrush   effectBrush          = chainedEffectFactory.CreateBrush();

                    effectBrush.SetSourceParameter("SaturationSource", _surface.Brush);

                    _backgroundImageVisual.Brush = effectBrush;

                    CapabilityText = "Effects are supported and fast. Background image is blurred and desaturated.";
                }
                else
                {
                    // If effects are slow but supported use desaturation effect since it is less expensive than blur
                    CompositionEffectFactory saturationEffectFactory = _compositor.CreateEffectFactory(saturationEffect);
                    CompositionEffectBrush   saturationBrush         = saturationEffectFactory.CreateBrush();

                    saturationBrush.SetSourceParameter("SaturationSource", _surface.Brush);

                    _backgroundImageVisual.Brush = saturationBrush;

                    CapabilityText = "Effects are supported but not fast. Background image is desaturated.";
                }
            }
            else
            {
                //
                // If effects are not supported, just use the image as the background with no effects
                // and remove the center circle image to declutter the UI.
                //

                if (_containsCircleImage)
                {
                    _imageContainer.Children.Remove(_circleImageVisual);
                    _containsCircleImage = false;
                }

                _backgroundImageVisual.Brush = _surface.Brush;

                CapabilityText = "Effects not supported. No effects are applied.";
            }
        }
Пример #11
0
        public GlowPanel2() : base()
        {
            this.DefaultStyleKey = typeof(GlowPanel2);
            _compositor          = ElementCompositionPreview.GetElementVisual(this).Compositor;
            _maskBrush           = _compositor.CreateMaskBrush();
            Visual.Brush         = _maskBrush;

            _foregroundBrush            = _compositor.CreateLinearGradientBrush();
            _foregroundBrush.StartPoint = Vector2.Zero;
            _foregroundBrush.EndPoint   = new Vector2(1.0f);

            _bottomRightGradientStop        = _compositor.CreateColorGradientStop();
            _bottomRightGradientStop.Offset = 0.5f;
            _bottomRightGradientStop.Color  = Green;
            _topLeftradientStop             = _compositor.CreateColorGradientStop();
            _topLeftradientStop.Offset      = 0.5f;
            _topLeftradientStop.Color       = Blue;
            _foregroundBrush.ColorStops.Add(_bottomRightGradientStop);
            _foregroundBrush.ColorStops.Add(_topLeftradientStop);


            _backgroundBrush            = _compositor.CreateLinearGradientBrush();
            _backgroundBrush.StartPoint = new Vector2(1.0f, 0);
            _backgroundBrush.EndPoint   = new Vector2(0, 1.0f);

            _topRightGradientStop          = _compositor.CreateColorGradientStop();
            _topRightGradientStop.Offset   = 0.25f;
            _topRightGradientStop.Color    = Black;
            _bottomLeftGradientStop        = _compositor.CreateColorGradientStop();
            _bottomLeftGradientStop.Offset = 1.0f;
            _bottomLeftGradientStop.Color  = Black;
            _backgroundBrush.ColorStops.Add(_topRightGradientStop);
            _backgroundBrush.ColorStops.Add(_bottomLeftGradientStop);


            var graphicsEffect = new BlendEffect()
            {
                Mode       = BlendEffectMode.Screen,
                Foreground = new CompositionEffectSourceParameter("Main"),
                Background = new CompositionEffectSourceParameter("Tint"),
            };

            var effectFactory = _compositor.CreateEffectFactory(graphicsEffect);
            var brush         = effectFactory.CreateBrush();

            brush.SetSourceParameter("Main", _foregroundBrush);
            brush.SetSourceParameter("Tint", _backgroundBrush);


            //    GaussianBlurEffect blurEffect = new GaussianBlurEffect()
            //    {
            //        Name = "Blur",
            //        BlurAmount = 1.0f,
            //        BorderMode = EffectBorderMode.Hard,
            //        Source = new CompositionEffectSourceParameter("source");
            //};

            //CompositionEffectFactory blurEffectFactory = _compositor.CreateEffectFactory(blurEffect);
            //CompositionEffectBrush _backdropBrush = blurEffectFactory.CreateBrush();

            //// Create a BackdropBrush and bind it to the EffectSourceParameter source

            //_backdropBrush.SetSourceParameter("source", _compositor.CreateBackdropBrush());

            _maskBrush.Source = brush;


            Loaded += async(s, e) =>
            {
                UpdateGradients();
                await Task.Delay(2000);
            };
        }