首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将选定的PowerPoint形状(或DrawingML)转换为XAML

将选定的PowerPoint形状(或DrawingML)转换为XAML
EN

Stack Overflow用户
提问于 2015-08-19 11:54:33
回答 1查看 1.5K关注 0票数 2

我需要将选定的PowerPoint形状转换为XAML,这样我就可以在我的WPF应用程序中有效地放置一个等效的基于向量的形状( XAML最终结果必须是可伸缩的--转换到图像会使我试图做的事情的目的落空)。

我愿意使用各种方法来实现这一点,包括编写一个PowerPoint加载项(如果这样可以让我访问PowerPoint中所选形状的bezier点坐标)。我对PowerPoint加载项还不太熟悉,不知道这是否可能。

我的第一种方法是将PowerPoint形状复制到剪贴板上,然后将剪贴板内容转换为我可以理解的对象,然后从那里生成XAML。如果我这样做,我就可以获得DrawingML表示(通过Art::GVML ClipFormat),但尚不清楚如何轻松地将该DrawingML转换为XAML (看起来需要从头创建几个星期的容易出错的工作)。

剪贴板上还有其他可用的格式(EMF、System.Drawing.Imaging.Metafile、PowerPoint 12.0内部形状),但它们似乎都是死胡同。

有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-19 14:29:44

你可以试试这个:

Powerpoint形状到WMF

代码语言:javascript
复制
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/XamlTunehttp://www.wpf-graphics.com/ReaderSvg.aspx。我怀疑这是否会像直接转换一样有效,但你永远不会知道。

关于PowerPoint外接程序和运行上述示例,您需要库。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32094792

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档