private void Complete(bool forceComplete)
        {
            // If we're forcing completion, make sure the scope batch is cleaned up
            if (forceComplete && (_scopeBatch != null))
            {
                CleanupScopeBatch();
            }

            // If we've completed the transition or we're forcing completion, cleanup
            if (forceComplete || (_imageLoaded && _animationCompleted))
            {
                _sprite = null;

                // Clear the sprite from the UIElement
                ElementCompositionPreview.SetElementChildVisual(_parent, null);

                // Clean up the image and show it
                if (_targetImage != null)
                {
                    _targetImage.ImageOpened -= CompositionImage_ImageOpened;

                    _targetImage.Opacity = 1f;

                    _targetImage = null;
                }
            }
        }
Пример #2
0
        private void LoadImage(CompositionSurfaceBrush brush, Uri uri)
        {
            // Create an image source to load
            CompositionImage imageSource = _imageFactory.CreateImageFromUri(uri);

            brush.Surface = imageSource.Surface;
        }
        private async void ApplyEffect(CompositionImage image)
        {
            Task <CompositionDrawingSurface> task = null;

            // If we've requested a load time effect input, kick it off now
            if (_currentTechnique.LoadTimeEffectHandler != null)
            {
                task = SurfaceLoader.LoadFromUri(image.Source, Size.Empty, _currentTechnique.LoadTimeEffectHandler);
            }

            // Create the new brush, set the inputs and set it on the image
            CompositionEffectBrush brush = _currentTechnique.CreateBrush();

            brush.SetSourceParameter("ImageSource", image.SurfaceBrush);
            image.Brush = brush;

            // If we've got an active task, wait for it to finish
            if (task != null)
            {
                CompositionDrawingSurface effectSurface = await task;

                // Set the effect surface as input
                brush.SetSourceParameter("EffectSource", _compositor.CreateSurfaceBrush(effectSurface));
            }
        }
        private Visual MakeImageVisualforFollower(Uri imageUri, Vector2 size)
        {
            //Load profile image into a CompositionImage
            CompositionImage profileImage =
                _compositor.DefaultGraphicsDevice.CreateImageFromUri(imageUri);

            CompositionImage maskImage = _compositor.DefaultGraphicsDevice.CreateImageFromUri(new Uri("ms-appx:///Assets/CircularAlphaMaskInflated.png"));

            CompositeEffect maskComposite = new Microsoft.Graphics.Canvas.Effects.CompositeEffect();

            maskComposite.Sources.Add(new CompositionEffectSourceParameter("image"));
            maskComposite.Sources.Add(new CompositionEffectSourceParameter("maskImage"));
            maskComposite.Mode = Microsoft.Graphics.Canvas.CanvasComposite.DestinationIn;
            maskComposite.Name = "Mask";

            CompositionEffectFactory effectFactory = _compositor.CreateEffectFactory(maskComposite);

            CompositionEffect maskEffect = effectFactory.CreateEffect();

            maskEffect.SetSourceParameter("image", profileImage);
            maskEffect.SetSourceParameter("maskImage", maskImage);

            EffectVisual profileImageVisual = _compositor.CreateEffectVisual();

            profileImageVisual.Effect = maskEffect;
            profileImageVisual.Size   = size;

            return(profileImageVisual);
        }
Пример #5
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;
        }
Пример #6
0
        private void ImageList_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (ImageList.SelectedItem != null)
            {
                ListViewItem item        = (ListViewItem)ImageList.ContainerFromItem(ImageList.SelectedItem);
                Uri          imageSource = _imageUriGetterFunc(item.Content, true);

                if (_crossFadeBatch == null)
                {
                    // Save the previous image for a cross-fade
                    _previousSurfaceBrush.Surface     = BackgroundImage.SurfaceBrush.Surface;
                    _previousSurfaceBrush.CenterPoint = BackgroundImage.SurfaceBrush.CenterPoint;
                    _previousSurfaceBrush.Stretch     = BackgroundImage.SurfaceBrush.Stretch;

                    // Load the new background image
                    BackgroundImage.ImageOpened += BackgroundImage_ImageChanged;
                }

                // Update the images
                BackgroundImage.Source = imageSource;
                PrimaryImage.Source    = imageSource;

                if (!_transition.Completed)
                {
                    _transition.Cancel();
                }

                // Kick off a connected animation to animate from it's current position to it's new location
                CompositionImage image = VisualTreeHelperExtensions.GetFirstDescendantOfType <CompositionImage>(item);
                _transition.Initialize(this, image, null);
                _transition.Start(this, PrimaryImage, null, null);
            }
        }
        private void AddImageVisualForFollower(Uri imageUri, Vector3 offset, Vector2 size)
        {
            //Load profile image into a CompositionImage
            CompositionImage profileImage =
                _compositor.DefaultGraphicsDevice.CreateImageFromUri(imageUri);

            CompositionImage maskImage = _compositor.DefaultGraphicsDevice.CreateImageFromUri(new Uri("ms-appx:///Assets/CircularAlphaMaskInflated.png"));

            //Configure effect graph
            CompositeEffect maskCompositEffectDescription = new Microsoft.Graphics.Canvas.Effects.CompositeEffect();

            maskCompositEffectDescription.Sources.Add(new CompositionEffectSourceParameter("image"));
            maskCompositEffectDescription.Sources.Add(new CompositionEffectSourceParameter("maskImage"));
            maskCompositEffectDescription.Mode = Microsoft.Graphics.Canvas.CanvasComposite.DestinationIn;
            maskCompositEffectDescription.Name = "Mask";

            //Create an effect factory for the graph
            CompositionEffectFactory effectFactory = _compositor.CreateEffectFactory(maskCompositEffectDescription);

            //Create an instance of the effect and set source parameters
            CompositionEffect maskEffect = effectFactory.CreateEffect();

            maskEffect.SetSourceParameter("image", profileImage);
            maskEffect.SetSourceParameter("maskImage", maskImage);

            //Add main profile picture visual
            EffectVisual profileImageVisual = _compositor.CreateEffectVisual();

            profileImageVisual.Effect = maskEffect;
            profileImageVisual.Size   = size;
            profileImageVisual.Offset = offset;

            //Add ImageVisual to tree
            _rootVisual.Children.InsertAtTop(profileImageVisual);
        }
Пример #8
0
        private void LoadImage(CompositionSurfaceBrush brush)
        {
            // Create an image source to load
            CompositionImage imageSource = _imageFactory.CreateImageFromUri(new Uri("ms-appx:///Assets/cat.png"));

            brush.Surface = imageSource.Surface;
        }
        private void ThumbnailList_Click(object sender, ItemClickEventArgs e)
        {
            GridView         gridView = (GridView)sender;
            GridViewItem     item     = (GridViewItem)gridView.ContainerFromItem(e.ClickedItem);
            CompositionImage image    = VisualTreeHelperExtensions.GetFirstDescendantOfType <CompositionImage>(item);

            // We are about to transition to a new page.  Cancel any outstanding transitions.
            if (_currentTransition != null)
            {
                if (!_currentTransition.Completed)
                {
                    _currentTransition.Cancel();
                }
                _currentTransition = null;
            }

            DetailsInfo info;

            info.thumbanil = (Thumbnail)e.ClickedItem;

            // Setup the new transition and trigger the navigation
            ConnectedTransition transition = new ConnectedTransition();

            transition.Initialize(Frame, image, info);

            Frame.Navigate(typeof(CustomConnectedAnimationDetail), transition);
        }
        public void Initialize(UIElement host, CompositionImage sourceElement, object payload)
        {
            _host    = host;
            _parent  = host;
            _payload = payload;

            // Make a copy of the sourceElement's sprite so we can hand it off to the next page
            SpriteVisual sourceSprite = sourceElement.SpriteVisual;
            Compositor   compositor   = sourceSprite.Compositor;

            _sprite       = compositor.CreateSpriteVisual();
            _sprite.Size  = sourceSprite.Size;
            _sprite.Brush = sourceElement.SurfaceBrush;

            // We're going to use the backing surface, make sure it doesn't get released
            sourceElement.SharedSurface = true;

            // Determine the offset from the host to the source element used in the transition
            GeneralTransform coordinate = sourceElement.TransformToVisual(_parent);
            Point            position   = coordinate.TransformPoint(new Point(0, 0));

            // Set the sprite to that offset relative to the host
            _sprite.Offset = new Vector3((float)position.X, (float)position.Y, 0);

            // Set the sprite as the content under the host
            ElementCompositionPreview.SetElementChildVisual(_parent, _sprite);
        }
Пример #11
0
        private void ListView_ContainerContentChanging(ListViewBase sender, ContainerContentChangingEventArgs args)
        {
            CompositionImage image = args.ItemContainer.ContentTemplateRoot.GetFirstDescendantOfType <CompositionImage>();
            Uri imageSource        = _imageUriGetterFunc(args.Item, false);

            // Set the URI source, and size to the large target image
            image.Source = imageSource;
        }
Пример #12
0
        private void ListView_ContainerContentChanging(ListViewBase sender, ContainerContentChangingEventArgs args)
        {
            CompositionImage image     = args.ItemContainer.ContentTemplateRoot.GetFirstDescendantOfType <CompositionImage>();
            Thumbnail        thumbnail = args.Item as Thumbnail;

            // Update the image URI
            image.Source = new Uri(thumbnail.ImageUrl);
        }
 public override void AddToCache(string cacheKey, CompositionImage compositionImage, Dependency[] dependencies)
 {
     InProcCacheEntry cacheEntry = new InProcCacheEntry
     {
         CompositionImage = compositionImage,
         Dependencies = dependencies
     };
     Cache.Insert(cacheKey, cacheEntry);
 }
Пример #14
0
 private void UpdateEffectBrush()
 {
     if (ThumbnailList.ItemsPanelRoot != null)
     {
         foreach (ListViewItem item in ThumbnailList.ItemsPanelRoot.Children)
         {
             CompositionImage image = item.ContentTemplateRoot.GetFirstDescendantOfType <CompositionImage>();
             SetImageEffect(image);
         }
     }
 }
Пример #15
0
        private void ListView_ContainerContentChanging(ListViewBase sender, ContainerContentChangingEventArgs args)
        {
            CompositionImage image     = args.ItemContainer.ContentTemplateRoot.GetFirstDescendantOfType <CompositionImage>();
            Thumbnail        thumbnail = args.Item as Thumbnail;
            Uri uri = new Uri(thumbnail.ImageUrl);

            // Setup the brush for this image
            SetImageEffect(image);

            // Update the image URI
            image.Source = uri;
        }
Пример #16
0
        public override void OnPointerEnter(Vector2 pointerPosition, CompositionImage image)
        {
            _propertySet = _compositor.CreatePropertySet();
            _propertySet.InsertScalar("Scale", 1.25f);
            _propertySet.InsertScalar("Rotation", 0f);
            _propertySet.InsertVector2("Translate", new Vector2(0f, 0f));
            _propertySet.InsertVector2("CenterPointOffset", new Vector2((float)_lightMap.Size.Width / 2f, 0f));

            _transformExpression.SetReferenceParameter("props", _propertySet);

            image.Brush.StartAnimation("LightMapTransform.TransformMatrix", _transformExpression);
            _propertySet.StartAnimation("Rotation", _enterAnimation);
        }
        private void ThumbnailList_Loaded(object sender, RoutedEventArgs args)
        {
            if (_currentTransition != null)
            {
                DetailsInfo      info         = (DetailsInfo)_currentTransition.Payload;
                GridViewItem     item         = (GridViewItem)ThumbnailList.ContainerFromItem(info.thumbanil);
                CompositionImage image        = VisualTreeHelperExtensions.GetFirstDescendantOfType <CompositionImage>(item);
                ScrollViewer     scrollViewer = VisualTreeHelperExtensions.GetFirstDescendantOfType <ScrollViewer>(ThumbnailList);

                // Kick off the transition now that the page has loaded
                _currentTransition.Start(MyGrid, image, scrollViewer, ThumbnailList);
            }
        }
        private void AddImageVisualForFollower(Uri imageUri, Vector3 offset, Vector2 size)
        {
            //Load profile image into a CompositionImage
            CompositionImage profileImage =
                _compositor.DefaultGraphicsDevice.CreateImageFromUri(imageUri);

            ImageVisual profileImageVisual = _compositor.CreateImageVisual();

            profileImageVisual.Image  = profileImage;
            profileImageVisual.Size   = size;
            profileImageVisual.Offset = offset;

            _rootVisual.Children.InsertAtTop(profileImageVisual);
        }
        private void LoadImage(Uri uri)
        {
            // Create CompositionSurfaceBrush
            var surfaceBrush = _compositor.CreateSurfaceBrush();

            // Create an image source to load
            CompositionImage imageSource = _imageFactory.CreateImageFromUri(uri);

            surfaceBrush.Surface = imageSource.Surface;

            _brush.SetSourceParameter("source", surfaceBrush);

            RotateHue(0);
        }
Пример #20
0
        public override void OnPointerEnter(Vector2 pointerPosition, CompositionImage image)
        {
            _propertySet = _compositor.CreatePropertySet();
            _propertySet.InsertScalar("Scale", 1f);
            Vector2 positionNormalized = new Vector2((pointerPosition.X / (float)image.Width) - .5f, (pointerPosition.Y / (float)image.Height) - .5f);

            _propertySet.InsertVector2("Translate", positionNormalized);
            _propertySet.InsertVector2("CenterPointOffset", new Vector2(128, 128));

            _transformExpression.SetReferenceParameter("props", _propertySet);

            image.Brush.StartAnimation("LightMapTransform.TransformMatrix", _transformExpression);
            _propertySet.StartAnimation("Scale", _enterAnimation);
        }
Пример #21
0
        protected void SaveImageToDiskCache(CompositionImage compositionImage)
        {
            if (!compositionImage.Properties.IsImagePresent)
                return;

            HttpContext httpContext = HttpContext.Current;
            string filePath = httpContext.Server.MapPath(GetDiskCacheFilePath(httpContext, compositionImage.Properties.CacheProviderKey, compositionImage.Properties.FileExtension));

            using (FileStream fileStream = File.OpenWrite(filePath))
            {
                BitmapEncoder encoder = compositionImage.Properties.GetEncoder();
                encoder.Frames.Add(BitmapFrame.Create(compositionImage.Image));
                encoder.Save(fileStream);
            }
        }
        private void AddImageVisualForFollower(Uri imageUri, Vector3 offset, Vector2 size)
        {
            //Load profile image into a CompositionImage
            CompositionImage profilePic =
                _compositor.DefaultGraphicsDevice.CreateImageFromUri(imageUri);

            //Add main profile picture visual
            ImageVisual profilePicVisual = _compositor.CreateImageVisual();

            profilePicVisual.Image   = profilePic;
            profilePicVisual.Stretch = CompositionStretch.UniformToFill;
            profilePicVisual.Size    = size;
            profilePicVisual.Offset  = offset;

            //Add ImageVisual to tree
            _rootVisual.Children.InsertAtTop(profilePicVisual);
        }
Пример #23
0
        private void ThumbnailList_ItemClick(object sender, ItemClickEventArgs e)
        {
            ListViewItem     listItem = (ListViewItem)ThumbnailList.ContainerFromItem(e.ClickedItem);
            CompositionImage image    = listItem.ContentTemplateRoot.GetFirstDescendantOfType <CompositionImage>();

            // Flip each thumbnail as it's clicked
            SpriteVisual sprite = image.SpriteVisual;

            sprite.RotationAxis = new Vector3(1, 0, 0);
            sprite.CenterPoint  = new Vector3(sprite.Size.X / 2, sprite.Size.Y / 2, 0);

            ScalarKeyFrameAnimation rotateAnimation = _compositor.CreateScalarKeyFrameAnimation();

            rotateAnimation.InsertKeyFrame(0, 0);
            rotateAnimation.InsertKeyFrame(1, 360);
            rotateAnimation.Duration = TimeSpan.FromSeconds(2);
            sprite.StartAnimation("RotationAngleInDegrees", rotateAnimation);
        }
        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;
        }
Пример #25
0
        private void SetImageEffect(CompositionImage image)
        {
            // Create the effect brush and bind the normal map
            CompositionEffectBrush brush = _effectFactory.CreateBrush();

            ComboBoxItem item = LightingSelection.SelectedValue as ComboBoxItem;

            switch ((LightingTypes)item.Tag)
            {
            case LightingTypes.SpotLightSpecular:
            case LightingTypes.PointSpecular:
                brush.StartAnimation("Light1.LightPosition", _lightPositionAnimation);
                brush.StartAnimation("Light1.LightColor", _lightColorAnimation);
                brush.StartAnimation("Light2.LightPosition", _lightPositionAnimation);
                brush.StartAnimation("Light2.LightColor", _lightColorAnimation);
                brush.SetSourceParameter("NormalMap", _circleNormalsBrush);
                break;

            case LightingTypes.DistantDiffuse:
                brush.SetSourceParameter("NormalMap", _circleNormalsBrush);
                brush.StartAnimation("Light1.Azimuth", _lightAzimuthAnimation);
                brush.StartAnimation("Light1.Elevation", _lightElevationAnimation);
                break;

            case LightingTypes.DistantSpecular:
                brush.SetSourceParameter("NormalMap", _circleNormalsBrush);
                brush.StartAnimation("Light1.Azimuth", _lightAzimuthAnimation);
                brush.StartAnimation("Light1.Elevation", _lightElevationAnimation);
                brush.StartAnimation("Light2.Azimuth", _lightAzimuthAnimation);
                brush.StartAnimation("Light2.Elevation", _lightElevationAnimation);
                break;

            default:
                brush.StartAnimation("Light1.LightPosition", _lightPositionAnimation);
                brush.StartAnimation("Light1.LightColor", _lightColorAnimation);
                brush.SetSourceParameter("NormalMap", _flatNormalsBrush);
                break;
            }

            // Update the CompositionImage to use the custom effect brush
            image.Brush = brush;
        }
Пример #26
0
        public override void AddToCache(string cacheKey, CompositionImage compositionImage, Dependency[] dependencies)
        {
            EnsureDocument();

            // Save image to disk.
            SaveImageToDiskCache(compositionImage);

            lock (_doc)
            {
                // Double-check that item hasn't been added to cache since we checked.
                if (ExistsInCache(cacheKey))
                    return;

                var itemElement = new XElement("item",
                    new XAttribute("id", compositionImage.Properties.CacheProviderKey),
                    new XAttribute("uniqueKey", cacheKey),
                    new XAttribute("isImagePresent", compositionImage.Properties.IsImagePresent),
                    new XAttribute("format", compositionImage.Properties.Format),
                    new XAttribute("colourDepth", compositionImage.Properties.ColourDepth));
                if (compositionImage.Properties.Width != null)
                    itemElement.Add(new XAttribute("width", compositionImage.Properties.Width.Value));
                if (compositionImage.Properties.Height != null)
                    itemElement.Add(new XAttribute("height", compositionImage.Properties.Height.Value));
                if (compositionImage.Properties.JpegCompressionLevel != null)
                    itemElement.Add(new XAttribute("jpegCompressionLevel", compositionImage.Properties.JpegCompressionLevel.Value));

                XElement dependenciesElement = new XElement("dependencies");
                itemElement.Add(dependenciesElement);

                foreach (var dependency in dependencies)
                    dependenciesElement.Add(new XElement("dependency",
                        new XAttribute("text1", dependency.Text1),
                        new XAttribute("text2", dependency.Text2),
                        new XAttribute("text3", dependency.Text3),
                        new XAttribute("text4", dependency.Text4)));

                _doc.Root.Add(itemElement);
                _doc.Save(_docPath);
            }
        }
Пример #27
0
        public void Dispose()
        {
            imageFactory = null;
            imageSource  = null;


            if (effect != null)
            {
                effect.Dispose();
                effect = null;
            }

            if (surfaceBrush != null)
            {
                surfaceBrush.Surface = null;
                surfaceBrush.Dispose();
                surfaceBrush = null;
            }

            //if (visual != null)
            //{
            //    if(spriteVisual!=null) visual.Children.Remove(spriteVisual);
            //    visual.Dispose();
            //    visual = null;
            //}

            if (effectBrush != null)
            {
                effectBrush.SetSourceParameter(EffectSource, null);
                effectBrush.Dispose();
                effectBrush = null;
            }

            if (spriteVisual != null)
            {
                spriteVisual.Brush = null;
                spriteVisual.Dispose();
                spriteVisual = null;
            }
        }
Пример #28
0
        private void SetupCompositionImage(CompositionImage image, News.Helpers.Composition.CompositionShadow shadow)
        {
            var imageVisual = image.SpriteVisual;
            var compositor  = imageVisual.Compositor;

            var imageLoader      = ImageLoaderFactory.CreateImageLoader(compositor);
            var imageMaskSurface = imageLoader.CreateManagedSurfaceFromUri(new Uri("ms-appx:///Helpers/Composition/CircleMask.png"));

            var mask = compositor.CreateSurfaceBrush();

            mask.Surface = imageMaskSurface.Surface;

            var source = image.SurfaceBrush as CompositionSurfaceBrush;

            var maskBrush = compositor.CreateMaskBrush();

            maskBrush.Mask   = mask;
            maskBrush.Source = source;

            image.Brush = maskBrush;
            shadow.Mask = maskBrush.Mask;
        }
Пример #29
0
        private async void ApplyEffect(CompositionImage image)
        {
            ManagedSurface effectSurface = null;

            // If we've requested a load time effect input, kick it off now
            if (_currentTechnique.LoadTimeEffectHandler != null)
            {
                effectSurface = await ImageLoader.Instance.LoadFromUriAsync(image.Source, Size.Empty, _currentTechnique.LoadTimeEffectHandler);
            }

            // Create the new brush, set the inputs and set it on the image
            CompositionEffectBrush brush = _currentTechnique.CreateBrush();

            brush.SetSourceParameter("ImageSource", image.SurfaceBrush);
            image.Brush = brush;

            // Set the effect surface as input
            if (effectSurface != null)
            {
                brush.SetSourceParameter("EffectSource", effectSurface.Brush);
            }
        }
Пример #30
0
        /// <summary>
        /// Bind Compositon Images to the list which need to continue to the next page on navigation.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="args"></param>
        private void FruitsList_ContainerContentChanging(ListViewBase sender, ContainerContentChangingEventArgs args)
        {
            //Get the clicked Item
            var item = args.Item as Item;

            //Get hold of the UIElement to bind items.
            var contentPanel = args.ItemContainer.ContentTemplateRoot as StackPanel;

            //Create Composition Image from data source
            var parentRectangle = _compositor.CreateContainerVisual();
            var rectangleColor  = _compositor.CreateSpriteVisual();

            rectangleColor.Size = new System.Numerics.Vector2(40, 40);

            //Use ImageFactory to load image from URI.
            try
            {
                CompositionImageFactory imageFactory = CompositionImageFactory.CreateCompositionImageFactory(_compositor);
                CompositionImageOptions options      = new CompositionImageOptions()
                {
                    DecodeWidth  = 160,
                    DecodeHeight = 160,
                };
                CompositionImage image = imageFactory.CreateImageFromUri(item.imageUri, options);
                rectangleColor.Brush = _compositor.CreateSurfaceBrush(image.Surface);
            }
            catch
            {
                rectangleColor.Brush = _compositor.CreateColorBrush(Windows.UI.Colors.Red);
            }

            //Bind Composition Image to UIElement - Rectangle in this case.
            Rectangle rectImage = contentPanel.FindName("imageItem") as Rectangle;

            parentRectangle.Children.InsertAtTop(rectangleColor);
            item.imageContainerVisual = parentRectangle;
            item.rectImage            = rectImage;
            ElementCompositionPreview.SetElementChildVisual(rectImage, parentRectangle);
        }
Пример #31
0
        private async Task <bool> CreateSurface()
        {
            surfaceBrush = compositor.CreateSurfaceBrush();
            //var uriSource = UriManager.GetFilUriFromString(Source);
            //imageSource = imageFactory.CreateImageFromUri(uriSource);
            try
            {
                var file = await Windows.Storage.StorageFile.GetFileFromPathAsync(Source);

                if (file != null)
                {
                    imageSource          = imageFactory.CreateImageFromFile(file);
                    surfaceBrush.Surface = imageSource.Surface;
                    surfaceBrush.Stretch = CompositionStretch.UniformToFill;
                }
            }
            catch (Exception ex) {
                return(false);
            }

            return(true);
        }
Пример #32
0
        public override void AddToCache(string cacheKey, CompositionImage compositionImage, Dependency[] dependencies)
        {
            // Save image to disk.
            SaveImageToDiskCache(compositionImage);

            UseConnection(conn =>
            {
                using (DbCommand comm = conn.CreateCommand())
                {
                    comm.CommandText =
                        "INSERT INTO Cache (ID, UniqueKey, IsImagePresent, Width, Height, Format, ColorDepth, JpegCompressionLevel) VALUES (@ID, @UniqueKey, @IsImagePresent, @Width, @Height, @Format, @ColorDepth, @JpegCompressionLevel)";
                    AddCommandParameter(comm, "ID", DbType.String, compositionImage.Properties.CacheProviderKey);
                    AddCommandParameter(comm, "UniqueKey", DbType.String, cacheKey);
                    AddCommandParameter(comm, "IsImagePresent", DbType.Boolean,
                        compositionImage.Properties.IsImagePresent);
                    AddCommandParameter(comm, "Width", DbType.Int32, compositionImage.Properties.Width);
                    AddCommandParameter(comm, "Height", DbType.Int32, compositionImage.Properties.Height);
                    AddCommandParameter(comm, "Format", DbType.String, compositionImage.Properties.Format);
                    AddCommandParameter(comm, "ColorDepth", DbType.Int32, compositionImage.Properties.ColourDepth);
                    AddCommandParameter(comm, "JpegCompressionLevel", DbType.Int32,
                        compositionImage.Properties.JpegCompressionLevel);
                    comm.ExecuteNonQuery();

                    foreach (Dependency dependency in dependencies)
                    {
                        comm.CommandText =
                            "INSERT INTO CacheDependencies (CacheID, Text1, Text2, Text3, Text4) VALUES (@CacheID, @Text1, @Text2, @Text3, @Text4);";
                        comm.Parameters.Clear();
                        AddCommandParameter(comm, "CacheID", DbType.String, compositionImage.Properties.CacheProviderKey);
                        AddCommandParameter(comm, "Text1", DbType.String, dependency.Text1);
                        AddCommandParameter(comm, "Text2", DbType.String, dependency.Text2);
                        AddCommandParameter(comm, "Text3", DbType.String, dependency.Text3);
                        AddCommandParameter(comm, "Text4", DbType.String, dependency.Text4);
                        comm.ExecuteNonQuery();
                    }
                }
            });
        }
Пример #33
0
        private void SetImageEffect(CompositionImage image)
        {
            // Create the effect brush and bind the normal map
            CompositionEffectBrush brush = _effectFactory.CreateBrush();

            ComboBoxItem item = LightingSelection.SelectedValue as ComboBoxItem;

            switch ((LightingTypes)item.Tag)
            {
            case LightingTypes.SpotLightSpecular:
            case LightingTypes.PointSpecular:
            case LightingTypes.DistantDiffuse:
            case LightingTypes.DistantSpecular:
                brush.SetSourceParameter("NormalMap", _sphereNormalMap == null ? null : _sphereNormalMap.Brush);
                break;

            default:
                brush.SetSourceParameter("NormalMap", _edgeNormalMap == null ? null : _edgeNormalMap.Brush);
                break;
            }

            // Update the CompositionImage to use the custom effect brush
            image.Brush = brush;
        }
Пример #34
0
        public void Dispose()
        {
            imageFactory = null;
            imageSource = null;


            if (effect != null)
            {
                effect.Dispose();
                effect = null;
            }

            if (surfaceBrush != null)
            {
                surfaceBrush.Surface = null;
                surfaceBrush.Dispose();
                surfaceBrush = null;
            }

            //if (visual != null)
            //{
            //    if(spriteVisual!=null) visual.Children.Remove(spriteVisual);
            //    visual.Dispose();
            //    visual = null;
            //}
            
            if (effectBrush != null)
            {
                effectBrush.SetSourceParameter(EffectSource, null);
                effectBrush.Dispose();
                effectBrush = null;
            }

            if (spriteVisual != null) {
                spriteVisual.Brush = null;
                spriteVisual.Dispose();
                spriteVisual = null;
            }
            
        }
Пример #35
0
 private void CreateSurface()
 {
     surfaceBrush = compositor.CreateSurfaceBrush();
     var uriSource = UriManager.GetFilUriFromString(Source);
     imageSource = imageFactory.CreateImageFromUri(uriSource);
     surfaceBrush.Surface = imageSource.Surface;
 }
Пример #36
0
        private async Task<bool> CreateSurface()
        {
            surfaceBrush = compositor.CreateSurfaceBrush();
            //var uriSource = UriManager.GetFilUriFromString(Source);
            //imageSource = imageFactory.CreateImageFromUri(uriSource);
            try
            {
                var file = await Windows.Storage.StorageFile.GetFileFromPathAsync(Source);
                if (file != null)
                {
                    imageSource = imageFactory.CreateImageFromFile(file);
                    surfaceBrush.Surface = imageSource.Surface;
                    surfaceBrush.Stretch = CompositionStretch.UniformToFill;
                }
            }
            catch //(Exception ex) 
            {
                return false;
            }

            return true;
        }
Пример #37
0
        private void Canvas_PointerMoved(object sender, PointerRoutedEventArgs e)
        {
            CompositionImage image = ((DependencyObject)sender).GetFirstDescendantOfType <CompositionImage>();

            _currentTechnique.OnPointerMoved(e.GetCurrentPoint(image).Position.ToVector2(), image);
        }
 internal static void Add(string cacheKey, CompositionImage compositionImage, Dependency[] dependencies)
 {
     Provider.AddToCache(cacheKey, compositionImage, dependencies);
 }
Пример #39
0
 public static void SendImageToHttpResponse(HttpContext context, CompositionImage compositionImage)
 {
     context.Response.ContentType = compositionImage.Properties.MimeType;
     Composition.SaveImageStream(compositionImage, context.Response.OutputStream);
     context.Response.Flush();
 }
 public abstract void AddToCache(string cacheKey, CompositionImage compositionImage, Dependency[] dependencies);