代码之家  ›  专栏  ›  技术社区  ›  Ryan Abbott

在PowerPoint 2007中,如何以编程方式定位标注的尾部?

  •  2
  • Ryan Abbott  · 技术社区  · 15 年前

    我正在查看PowerPoint 2007文件的DrawingML,这是它用于标注对象坐标和几何体的内容:

    <p:spPr>
        <a:xfrm>
            <a:off x="2819400" y="5181600"/> // X,Y Position of Callout Box
            <a:ext cx="609600" cy="457200"/> // Width,Height of Callout Box
        </a:xfrm>
        <a:prstGeom prst="wedgeRectCallout">
            <a:avLst>
                <a:gd name="adj1" fmla="val 257853"/> // X Position Of Tail
                <a:gd name="adj2" fmla="val -532360"/> // Y Position of Tail
            </a:avLst>
        </a:prstGeom>
        <a:solidFill>
            <a:schemeClr val="accent1">
                <a:alpha val="50000"/>
            </a:schemeClr>
        </a:solidFill>
    </p:spPr>
    

    //This gives me the distance between the Coordinate and the Center of the Callout.
    DistanceX = Coordinate.X - (Callout.X + Callout.X_Ext)/2
    DistanceY = Coordinate.Y - (Callout.Y + Callout.Y_Ext)/2
    

    但是,几何值不是两点之间的距离。

    有人知道计算这个的公式吗?

    3 回复  |  直到 14 年前
        1
  •  1
  •   Ryan Abbott    15 年前

    我想我已经找到了公式:

    DistanceX = Coordinate.X - (Callout.X + (Callout.X_Ext/2))
    DistanceY = Coordinate.Y - (Callout.Y + (Callout.Y_Ext/2))
    
    TailX = (DistanceX/Callout.X_Ext) * 100000
    TailY = (DistanceY/Callout.Y_Ext) * 100000
    
        2
  •  1
  •   Todd Main    15 年前

    如果可以调整的话,这可能是一个很好的快速方法——我还没有测试过。但是,如果我理解您的问题,那就是如何在屏幕上的特定位置(包括调整尾部大小/位置的情况)获取wedgeRectCallout尾部点的x/y。我假设您具有wedgeRectCallout的预定义大小。

    需要从presetShapeDefinitions.xml计算所需的值(通过Ecma下载找到)。所需的值位于wedgeRectCallout元素中:

    <lnTo>
    <pt x="xb" y="yb" />
    </lnTo>
    

    x=xb y=yb ? 转到Ecma文档,查看如何在中读取公式 并计算中的形状导向器 gdLst (采用默认或修改后的调整值)。在这种情况下,您需要计算所有/大多数指南,以确保获得xb和yb的值。

    如果您遇到任何问题或对此有更多问题,请告诉我。

        3
  •  0
  •   tady meshesha    7 年前

    在presetShapeDefinitions.xml文件中,该文件定义了绘制形状所需的参数和公式,如果您查看形状“wedgeRectCallout”,您将看到许多标记,如: <avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main"> , <gdLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main"> , <ahLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main"> , <cxnLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main"> , <rect l="l" t="t" r="r" b="b" xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" /> <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main"> .
    理解如何绘制形状所需的重要标记有: <gdLst> <pathLst> . <gdLst> 包含形状的公式,以及 < 说明如何绘制形状。
    我编写了一个小程序,将文件presetShapeDefinitions.xml中的所有公式转换为javascript。
    要访问该程序的网站页面,请单击 here .
    这个项目帮助我建立了 PPTXjs 将PPTX文件转换为HTML的插件。
    希望这有帮助。

    推荐文章