在PowerPoint 2007中,如何以编程方式定位Callouts Tail?

时间:2009-12-01 21:21:04

标签: powerpoint openxml drawingml presentationml

我正在查看PowerPoint 2007文件的DrawingML,这就是它对Callout对象的坐标和几何体的作用:

<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 个答案:

答案 0 :(得分:1)

我想我已经找到了公式:

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

答案 1 :(得分:1)

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

您需要的值需要从presetShapeDefinitions.xml计算(使用Ecma下载查找)。你想要的值在wedgeRectCallout元素中:

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

那你如何计算x=xby=yb?转到Ecma文档并查看如何阅读公式 DrawingML - 框架参考资料 - &gt;绘图ML - Main - &gt;形状定义和属性 - &gt; gd(形状指南)并计算gdLst中的形状指南(采用默认值或修改后的调整值)。在这种情况下,您需要计算所有/大多数指南,以确保获得xb和yb的值。

如果您遇到任何问题或对此有更多疑问,请与我们联系。

答案 2 :(得分:0)

在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>包含形状的公式,<pathLst>说明如何绘制形状。
我写了一个小程序,转换为javascript文件presetShapeDefinitions.xml中的所有公式 在该计划的网站页面上,点击here 这个程序帮助我构建了将{PPTX文件转换为HTML的PPTXjs插件 希望这会有所帮助。