以下のコードがあります。大まかな概要は、ファイル共有から.emfファイルを取得し、それをWPFがImage.Sourceに使用できるものに変換するカバーターであるということです。
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var fileName = (string)value;
if (fileName == null)
return new BitmapImage();
using (var stream = File.Open(fileName, FileMode.Open))
{
return GetImage(stream);
}
}
internal BitmapImage GetImage(Stream fileStream)
{
var img = Image.FromStream(fileStream);
var imgBrush = new BitmapImage();
imgBrush.BeginInit();
imgBrush.StreamSource = ConvertImageToMemoryStream(img);
imgBrush.CreateOptions = BitmapCreateOptions.PreservePixelFormat;
imgBrush.EndInit();
return imgBrush;
}
public MemoryStream ConvertImageToMemoryStream(Image img)
{
var ms = new MemoryStream();
img.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
return ms;
}
さて、ここではすべてが順調です。ユーザーには「印刷キャリブレーション」ページが必要になるため、「SampleDoc.emf」ファイルをアプリケーションに含め、リソースとしてマークしました。
ただし、そのリソースファイルをポイントすると、File.Open()の部分を正しく取得できないようです。これをどのように行うことができるかについてのアイデアはありますか?