你可以试试这个:
将 Powerpoint 形状转换为 WMF
Microsoft.Office.Interop.PowerPoint.Application app = new Microsoft.Office.Interop.PowerPoint.Application();
var pps = app.Presentations;
string d ="filepath.pptx";
Presentation ppt = pps.Open(d, MsoTriState.msoFalse, MsoTriState.msoFalse, MsoTriState.msoFalse);
for (int j = 1; j < ppt.Slides.Count; j++)
{
Slide sld = ppt.Slides[j];
List<Microsoft.Office.Interop.PowerPoint.Shape> shapes = new List<Microsoft.Office.Interop.PowerPoint.Shape>();
for (int k = 1; k < sld.Shapes.Count; k++)
{
Microsoft.Office.Interop.PowerPoint.Shape shape = sld.Shapes[k];
shape.Export("outputFilePath.wmf", PpShapeFormat.ppShapeFormatWMF);
}
}
然后 WMF 到 XAML:微软论坛:
1)查看http://www.wpf-graphics.com/ReaderWmf.aspx及其相关项目http://www.wpf-graphics.com/Paste2Xaml.aspx。这些是 WPF 的 EMF/WMF 阅读器。您将编写一个简单的实用程序来读取图像并再次将它们写回。我和他们一起玩了一点,和他们相处得很好。如果他们会为你工作,这将是我的第一选择。当然,您需要测试它们。由于各种格式之间的设计差异,这样的转换永远不会完美,因此请确保您没有使用转换器不支持的东西。
2)我遇到的另一个项目是http://lab.aspitalia.com/15/EmfToXaml-Beta.aspx。我没玩过,你可以看看。
3) 如果直接路由不起作用,您可以考虑将 WMF 文件转换为不同的矢量格式,如 SVG,然后将该 SVG 文件转换为 XAML。有很多用于 EMF/WMF 到 SVG 转换的工具。对于 SVG 到 XAML 的转换,您可以查看http://www.codeplex.com/XamlTune和http://www.wpf-graphics.com/ReaderSvg.aspx。我怀疑这会像直接转换一样有效,但你永远不知道。
关于 PowerPoint 加载项和运行上述示例,您需要 Microsoft Office 互操作库。