From b4417e3bd6275b84e188cbe438ba6e9c50bbe95a Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Mon, 21 Dec 2015 18:09:08 +0000 Subject: [PATCH] Support loading bitmaps from resources. Closes #358. --- .../Converters/BitmapTypeConverter.cs | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/Markup/Perspex.Markup.Xaml/Converters/BitmapTypeConverter.cs b/src/Markup/Perspex.Markup.Xaml/Converters/BitmapTypeConverter.cs index 1aa1660079..81cf3b0cdc 100644 --- a/src/Markup/Perspex.Markup.Xaml/Converters/BitmapTypeConverter.cs +++ b/src/Markup/Perspex.Markup.Xaml/Converters/BitmapTypeConverter.cs @@ -5,6 +5,7 @@ using System; using System.Globalization; using OmniXaml.TypeConversion; using Perspex.Media.Imaging; +using Perspex.Platform; namespace Perspex.Markup.Xaml.Converters { @@ -22,7 +23,19 @@ namespace Perspex.Markup.Xaml.Converters public object ConvertFrom(IXamlTypeConverterContext context, CultureInfo culture, object value) { - return new Bitmap((string)value); + var uri = new Uri((string)value, UriKind.RelativeOrAbsolute); + var scheme = uri.IsAbsoluteUri ? uri.Scheme : "file"; + + switch (scheme) + { + case "file": + return new Bitmap((string)value); + case "resource": + var assets = PerspexLocator.Current.GetService(); + return new Bitmap(assets.Open(uri)); + default: + throw new NotSupportedException($"Unsupported bitmap URI scheme: {uri.Scheme}."); + } } public object ConvertTo(IXamlTypeConverterContext context, CultureInfo culture, object value, Type destinationType)