Exemplo n.º 1
0
        public static async Task UpdateSource(IImageVisualElementRenderer renderer)
        {
            var Element      = renderer.Element;
            var Control      = renderer.GetNativeElement();
            var imageElement = Element as IImageElement;

            if (renderer.IsDisposed || Element == null || Control == null)
            {
                return;
            }

            ImageSource placeholderError = null;

            if (imageElement is Image img)
            {
                placeholderError = img.ErrorPlaceholder;
                var source = await img.LoadingPlaceholder.ToWindowsImageSourceAsync();

                renderer.SetImage(source);
            }

            var imageController = Element as IImageController;

            imageController?.SetIsLoading(true);
            try
            {
                var imagesource = await imageElement.Source.ToWindowsImageSourceAsync();

                if (renderer.IsDisposed)
                {
                    return;
                }


                if (imagesource is BitmapImage bitmapImage && _nativeAnimationSupport)
                {
                    bitmapImage.AutoPlay = false;
                }

                if (Control != null)
                {
                    renderer.SetImage(imagesource);
                }

                RefreshImage(renderer);

                // The ImageFailed event don't trigger when the local ImageSource is invalid, so we need to check the size.
                var size = renderer.GetDesiredSize(double.PositiveInfinity, double.PositiveInfinity);
                if (size.Request.IsZero && imageElement is Image)
                {
                    imagesource = await placeholderError.ToWindowsImageSourceAsync();

                    renderer.SetImage(imagesource);
                }
            }
            finally
            {
                imageController?.SetIsLoading(false);
            }
        }
Exemplo n.º 2
0
        public static async Task UpdateSource(IImageVisualElementRenderer renderer)
        {
            var Element      = renderer.Element;
            var Control      = renderer.GetNativeElement();
            var imageElement = Element as IImageElement;

            if (renderer.IsDisposed || Element == null || Control == null)
            {
                return;
            }

            if (imageElement is Image img)
            {
                var source = await img.LoadingPlaceholder.ToWindowsImageSourceAsync();

                renderer.SetImage(source);
            }

            var imageController = Element as IImageController;

            imageController?.SetIsLoading(true);

            try
            {
                // If it's a url image source and ToWindowsImageSourceAsync returns null, that was an error

                var imagesource = await imageElement.Source.ToWindowsImageSourceAsync();

                if (imageElement.Source is UriImageSource && imagesource == null)
                {
                    await DisplayErrorImage(renderer);

                    return;
                }

                if (renderer.IsDisposed)
                {
                    return;
                }

                if (imagesource is BitmapImage bitmapImage && _nativeAnimationSupport)
                {
                    bitmapImage.AutoPlay = false;
                }

                if (Control != null)
                {
                    renderer.SetImage(imagesource);
                }

                RefreshImage(renderer);
            }
            finally
            {
                imageController?.SetIsLoading(false);
            }
        }
Exemplo n.º 3
0
        public static async Task UpdateSource(IImageVisualElementRenderer renderer)
        {
            var Element      = renderer.Element;
            var Control      = renderer.GetNativeElement();
            var imageElement = Element as IImageElement;

            if (renderer.IsDisposed || Element == null || Control == null)
            {
                return;
            }

            var imageController = Element as IImageController;

            imageController?.SetIsLoading(true);

            ImageSource         source = imageElement.Source;
            IImageSourceHandler handler;

            if (source != null && (handler = Registrar.Registered.GetHandlerForObject <IImageSourceHandler>(source)) != null)
            {
                Windows.UI.Xaml.Media.ImageSource imagesource;

                try
                {
                    imagesource = await handler.LoadImageAsync(source);
                }
                catch (OperationCanceledException)
                {
                    imagesource = null;
                }

                // In the time it takes to await the imagesource, some zippy little app
                // might have disposed of this Image already.
                if (Control != null)
                {
                    renderer.SetImage(imagesource);
                }

                RefreshImage(imageElement as IViewController);
            }
            else
            {
                renderer.SetImage(null);
                imageController?.SetIsLoading(false);
            }
        }
Exemplo n.º 4
0
        public static async Task UpdateSource(IImageVisualElementRenderer renderer)
        {
            var Element      = renderer.Element;
            var Control      = renderer.GetNativeElement();
            var imageElement = Element as IImageElement;

            if (renderer.IsDisposed || Element == null || Control == null)
            {
                return;
            }

            var imageController = Element as IImageController;

            imageController?.SetIsLoading(true);

            try
            {
                var imagesource = await imageElement.Source.ToWindowsImageSourceAsync();

                if (renderer.IsDisposed)
                {
                    return;
                }


                if (imagesource is BitmapImage bitmapImage && _nativeAnimationSupport)
                {
                    bitmapImage.AutoPlay = false;
                }

                if (Control != null)
                {
                    renderer.SetImage(imagesource);
                }

                RefreshImage(renderer);
            }
            finally
            {
                imageController?.SetIsLoading(false);
            }
        }
Exemplo n.º 5
0
        public static void UpdateAspect(IImageVisualElementRenderer renderer, IImageElement controller)
        {
            var Element = renderer.Element;
            var Control = renderer.GetNativeElement();
            var image   = renderer.GetImage();

            if (renderer.IsDisposed || Element == null || Control == null)
            {
                return;
            }

            image.Stretch = GetStretch(controller.Aspect);
            if (controller.Aspect == Aspect.AspectFill || controller.Aspect == Aspect.AspectFit)

            {
                image.HorizontalAlignment = HorizontalAlignment.Center;
                image.VerticalAlignment   = VerticalAlignment.Center;
            }
            else
            {
                image.HorizontalAlignment = HorizontalAlignment.Left;
                image.VerticalAlignment   = VerticalAlignment.Top;
            }
        }