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