public ShadowTextControl() { _maskBrush = Compositor.CreateMaskBrush(); var surfaceTextBrush = CreateBrush(); _maskBrush.Source = surfaceTextBrush; }
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; }
public OutlinePanel() : base() { this.DefaultStyleKey = typeof(OutlinePanel); _compositor = ElementCompositionPreview.GetElementVisual(this).Compositor; _maskBrush = _compositor.CreateMaskBrush(); Visual.Brush = _maskBrush; _maskBrushSource = _compositor.CreateColorBrush(Color); }
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); }
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."; } }
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); }; }