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