using System; using System.Resources; using System.Windows; using System.Windows.Interop; using System.Windows.Markup; using System.Windows.Media; using System.Windows.Media.Imaging; namespace Developpez.Dotnet.Windows.Localization { /// /// Renvoie une version localisée de l'image dont la clé est spécifiée /// [MarkupExtensionReturnType(typeof(ImageSource))] public class LocImageExtension : LocResourceExtensionBase { /// /// Initialise une nouvelle instance de LocImageExtension /// public LocImageExtension() { } /// /// Initialise une nouvelle instance de LocImageExtension avec la clé de ressource spécifiée /// /// Clé de ressource de l'image à renvoyer public LocImageExtension(string resourceKey) : base(resourceKey) { } /// /// Renvoie une version localisée de l'image dont la clé est spécifiée, à partir du ResourceManager spécifié /// /// ResourceManager à utiliser /// L'image localisée si elle existe, sinon l'image dans sa version originale si elle existe, sinon null protected override object ProvideValueInternal(ResourceManager resourceManager) { ImageSource img = null; if (resourceManager != null) { System.Drawing.Bitmap bmp = resourceManager.GetObject(ResourceKey) as System.Drawing.Bitmap; if (bmp != null) img = GetImageSource(bmp); } return img; } private ImageSource GetImageSource(System.Drawing.Bitmap bmp) { BitmapSource src = Imaging.CreateBitmapSourceFromHBitmap( bmp.GetHbitmap(), IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions()); return src; } } }