我正在玩OpenXmlSDK,看看它是否是我们Powerpoint需求的可行解决方案。需要做的一件事是能够在Powerpoint中定位形状。我一直在寻找一种方法来获得一个Shape的位置,但只有MSDN" How To" http://msdn.microsoft.com/en-us/library/cc850828.aspx和一个Position类(但无法从Shape中获取)http://msdn.microsoft.com/en-us/library/office/documentformat.openxml.wordprocessing.position%28v=office.14%29.aspx。
我该怎么做:
PresentationDocument presentationDocument = PresentationDocument.Open("C:\\MyDoc.pptx", true);
IdPartPair pp = presentationDocument.PresentationPart.SlideParts.First().Parts.FirstOrDefault();
var shape = pp.OpenXmlPart;
// How do I get the position and dimensions?
答案 0 :(得分:3)
您有2个变量用于形状的尺寸: - 偏移量给出了形状顶角的位置 - 范围可以减小你的形状
shape.ShapeProperties.Transform2D.Offset.X //gives the x position of top left corner
shape.ShapeProperties.Transform2D.Offset.Y //gives the y position of top left corner
shape.ShapeProperties.Transform2D.Extents.X //gives the x size of the shape : the width
shape.ShapeProperties.Transform2D.Extents.Y //gives the y size of the shape : the height
答案 1 :(得分:1)
浏览相关幻灯片的XML并查找xfrm元素,其中应包含off(offset)和ext(extent)子元素。测量结果在动车组中(参见Wouter van Vugt的文件最后一页)。
答案 2 :(得分:0)
有时 ShapeProperties 不会显示为 Shape 属性,您必须编写
var sP = ((DocumentFormat.OpenXml.Presentation.Shape)shape).ShapeProperties;
之后,您可以使用Transform2D并按照Deunz的描述查找坐标。