本文是将演示如何解析pptx文件的多路径的形状转换到WPF,绘制多个Shape的Path
这是Pptx的【标注:弯曲曲线(无边框)】形状的OpenXml定义部分:
然后以下OpenXml Shape Path的子属性:
属性
类型
备注
extrusionOk (3D Extrusion Allowed)
bool
指定使用 3D 拉伸可能在此路径,默认false或0
fill (Path Fill)
PathFillMode
路径填充模式:Norm(默认)、None、Lighten、LightenLess、Darken、DarkenLess
stroke (Path Stroke)
是否存在轮廓:默认false
h (Path Height)
int
指定框架的高度或在路径坐标系统中应在使用的最大的 y 坐标
w (Path Width)
指定的宽度或在路径坐标系统中应在使用的最大的 x 坐标
首先为什么是要转为多个Shape呢?因为OpenXml每条路径,都能设置是否有轮廓、填充等属性,而该属性设置只能在Shape层,而不能在Geometry层,就算是通过PathGeometry的PathFigure也只能设置IsFilled(是否填充),不能设置IsStroke(是否有轮廓)
首先我们来创建对应Shape Path的类:
解析pptx形状的关键代码:
根据openxml的定义算出Shape Path:
将解析好的Shape Path转为WPF的形状Path:
然后渲染到界面:
pptx和WPF渲染结果对比:

我们会发现,pptx的形状和wpf的形状是一模一样的,同样的左边线条的Path是无填充的,而右边的矩形则是无轮廓有填充的
源码地址