Die Bildformate WMF und EMF (wikipedia) werden nicht nativ von WPF unterstützt, während in einer WinForms-Anwendung die Klasse Metafile verwendet werden kann.
private void button1_Click(object sender, EventArgs e)
{
Stream s = File.Open("c:\Zeichnung.wmf",
FileMode.Open, FileAccess.Read);
Metafile emf = new Metafile(s);
s.Close();
Graphics g = CreateGraphics();
g.DrawImage(emf, 0, 0, 300, 500);
emf.Dispose();
g.Dispose();
}
Für WPF gibt es seitens Microsoft keinen Support für die (von MS selbst entwickelten) Bildformate WMF und EMF. In einem von MVPs besuchten MSDN Forum heißt es: “WPF does not support the EMF and WMF image formats. These formats are more susceptible to security vulnerabilities than other image formats, so we do not intend to support them.“… “A 3rd party could write a codec for EMF or WMF that’s compatible …”
Gesucht gefunden: Ab2d.ReaderWmf – metafile importer
Refernez zur DLL hinzu +
<ab2d:WmfViewbox Source="Images/Zeichnung.wmf" />
oder
<ab2d:WmfDrawing Source="Images/Zeichnung.wmf"/>
WmfDrawing soll eine bessere Performance bieten als WmfViewbox da ersteres beim Rendern DrawingGeometry, StreamGeometry usw. verwendet während WmfViewbox sich auf Shapes (Canvas, Path, Polyline, …) stützt.
Eine Testversion ist auf der Internetseite ebenfalls zu finden. Eine Entwickler-Lizenz startet für den Runtime-Render bei $ 219 und endet bei $ 1399.
Eine weitere Möglichkeit ist auch die Konvertierung der Bilder in xaml (baml) wie in diesem Blogeintrag beschrieben. Das erfordert bei einer größeren Anzahl an Bildern allerdings jede Menge Arbeit.
Mit Einführung des Windows Imaging Component (WIC) zu XP SP3 und .NET 3.0 heißt es dann von Microsoft: “With the WIC (Windows Imaging Component) infrastructure, we provide the ability for ISVs to implement their own CODECs.”
Ein Download in mehreren Sprachen in 32 und 64 Bit ist unter den entsprechenden Links zur finden.