/// <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); }
/// <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); }
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); }
/// <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); }