示例#1
0
        /// <summary>
        /// Cached selection of best fit multi-device / multi-resolution image embedded resource
        /// </summary>
        /// <returns>Xamarin.Forms.ImageSource</returns>
        /// <param name="resourceId">ResourceID without extension, resolution modifier, or device modifier</param>
        /// <param name="assembly">Assembly in which the resource can be found</param>
        public static Xamarin.Forms.ImageSource FromMultiResource(string resourceId, Assembly assembly = null)
        {
            if (assembly is null || assembly == typeof(Xamarin.Forms.Grid).Assembly)
            {
                assembly = EmbeddedResourceExtensions.FindAssemblyForMultiResource(resourceId, assembly);
            }

            /*
             * assembly = assembly ?? AssemblyExtensions.AssemblyFromResourceId(resourceId);
             * if (assembly == null && Device.RuntimePlatform != Device.UWP)
             *  assembly = (Assembly)typeof(Assembly).GetTypeInfo().GetDeclaredMethod("GetCallingAssembly")?.Invoke(null, new object[0]);
             */

            if (assembly == null)
            {
                return(null);
            }
            var r           = BestGuessResource(resourceId, assembly);
            var path        = r == null ? resourceId : r.Path;
            var imageSource = Xamarin.Forms.ImageSource.FromResource(path, assembly);

            if (imageSource != null)
            {
                imageSource.SetValue(ImageScaleProperty, r == null ? 1.0f : r.Scale);
                imageSource.SetValue(EmbeddedResourceIdProperty, path);
                imageSource.SetValue(AssemblyProperty, assembly);
            }
            return(imageSource);
        }
示例#2
0
        /// <summary>
        /// Load an EmbeddedResource as a Xamarin.Forms.FileImageSource
        /// </summary>
        /// <param name="resourceId"></param>
        /// <param name="assembly"></param>
        /// <returns></returns>
        public static Xamarin.Forms.FileImageSource FromResourceAsFile(string resourceId, Assembly assembly = null)
        {
            assembly = EmbeddedResourceExtensions.FindAssemblyForResource(resourceId, assembly);

            /*
             * assembly = assembly ?? AssemblyExtensions.AssemblyFromResourceId(resourceId);
             * if (assembly == null && Device.RuntimePlatform != Device.UWP)
             *  assembly = (Assembly)typeof(Assembly).GetTypeInfo().GetDeclaredMethod("GetCallingAssembly")?.Invoke(null, new object[0]);
             */
            if (assembly == null)
            {
                return(null);
            }
            var r    = BestGuessResource(resourceId, assembly);
            var path = r == null ? resourceId : r.Path;

            var localPath   = P42.Utils.EmbeddedResourceCache.LocalStorageFullPathForEmbeddedResource(path, assembly);
            var imageSource = new FileImageSource {
                File = localPath
            };

            if (imageSource != null)
            {
                imageSource.SetValue(ImageScaleProperty, 1.0f);
                imageSource.SetValue(EmbeddedResourceIdProperty, resourceId);
                imageSource.SetValue(AssemblyProperty, assembly);
            }
            return(imageSource);
        }
示例#3
0
        internal static string BestEmbeddedMultiResourceMatch(string resourceId, Assembly assembly)
        {
            assembly = EmbeddedResourceExtensions.FindAssemblyForMultiResource(resourceId, assembly);

            /*
             * assembly = assembly ?? AssemblyExtensions.AssemblyFromResourceId(resourceId);
             * if (assembly == null && Device.RuntimePlatform != Device.UWP)
             *  assembly = (Assembly)typeof(Assembly).GetTypeInfo().GetDeclaredMethod("GetCallingAssembly").Invoke(null, new object[0]);
             */
            var r = BestGuessResource(resourceId, assembly);

            return(r?.Path);
        }
示例#4
0
        /// <summary>
        /// Cached selection of resource (literally - no automated selection of device, resolution, or extension).
        /// </summary>
        /// <returns>The resource.</returns>
        /// <param name="resourceId">Path.</param>
        /// <param name="assembly">Assembly.</param>
        public static new Xamarin.Forms.ImageSource FromResource(string resourceId, Assembly assembly = null)
        {
            assembly = EmbeddedResourceExtensions.FindAssemblyForResource(resourceId, assembly);

            /*
             * assembly = assembly ?? AssemblyExtensions.AssemblyFromResourceId(resourceId);
             * if (assembly == null && Device.RuntimePlatform != Device.UWP)
             *  assembly = (Assembly)typeof(Assembly).GetTypeInfo().GetDeclaredMethod("GetCallingAssembly").Invoke(null, new object[0]);
             */
            var imageSource = Xamarin.Forms.ImageSource.FromResource(resourceId, assembly);

            if (imageSource != null)
            {
                imageSource.SetValue(ImageScaleProperty, 1.0f);
                imageSource.SetValue(EmbeddedResourceIdProperty, resourceId);
                imageSource.SetValue(AssemblyProperty, assembly);
            }
            return(imageSource);
        }