C# 将选定的PowerPoint形状(或DrawingML)转换为XAML
我需要将选定的PowerPoint形状转换为XAML,这样我就可以在我的WPF应用程序中有效地放置一个等效的基于向量的形状(XAML的最终结果必须是可伸缩的-转换为图像违背了我尝试的目的) 我有很多方法可以实现这一点,包括编写PowerPoint加载项(如果这可以让我访问PowerPoint中选定形状的bezier点坐标)。我对PowerPoint加载项不够熟悉,不知道这是否可行 我的第一种方法是将PowerPoint形状复制到剪贴板,然后将剪贴板内容转换为我能理解的对象,然后从那里生成XAML。如果我这样做,我可以得到DrawingML表示(通过Art::GVML ClipFormat),但是不清楚如何轻松地将DrawingML转换为XAML(看起来像是几周的容易出错的工作,需要从头开始创建) 剪贴板上还有其他可用格式(EMF、System.Drawing.Imaging.Metafile、PowerPoint 12.0内部形状),但它们似乎都是死胡同 有什么建议吗?您可以尝试以下方法: Powerpoint形状到WMFC# 将选定的PowerPoint形状(或DrawingML)转换为XAML,c#,wpf,xaml,.emf,drawingml,C#,Wpf,Xaml,.emf,Drawingml,我需要将选定的PowerPoint形状转换为XAML,这样我就可以在我的WPF应用程序中有效地放置一个等效的基于向量的形状(XAML的最终结果必须是可伸缩的-转换为图像违背了我尝试的目的) 我有很多方法可以实现这一点,包括编写PowerPoint加载项(如果这可以让我访问PowerPoint中选定形状的bezier点坐标)。我对PowerPoint加载项不够熟悉,不知道这是否可行 我的第一种方法是将PowerPoint形状复制到剪贴板,然后将剪贴板内容转换为我能理解的对象,然后从那里生成XAML
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);
}
}
Microsoft.Office.Interop.PowerPoint.Application=new Microsoft.Office.Interop.PowerPoint.Application();
var pps=应用程序演示文稿;
string d=“filepath.pptx”;
演示ppt=pps.Open(d,MsoTriState.msoFalse,MsoTriState.msoFalse,MsoTriState.msoFalse);
对于(int j=1;j
然后WMF到XAML::
1) 检查和它的相关项目。这些是WPF的EMF/WMF读取器。您可以编写一个简单的实用程序来读入图像,然后再将它们写出来。我和他们一起玩过一点,运气不错。如果他们能为你工作,这将是我的第一选择。当然,你需要测试它们。由于不同格式之间的设计差异,像这样的转换永远不会完美,因此请确保您没有使用转换器中不支持的东西
2) 我遇到的另一个项目是。我没玩过,不过你可以看看
3)如果直接路由不起作用,您可以考虑将WMF文件转换为SVG等不同的向量格式,然后将SVG文件转换为XAML。有很多工具可用于EMF/WMF到SVG的转换。对于SVG到XAML的转换,您可以查看和。我怀疑这将工作以及直接转换,但你永远不知道
关于PowerPoint加载项和运行上述示例,您需要Microsoft Office Interop库。您需要使用哪个版本的PowerPoint文档?我没有使用任何保存的PowerPoint文档。我正在现场使用PowerPoint应用程序。那么2003年、2007年、2010年、2013年的PowerPoint版本是什么。。。?