2

我正在查看 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

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

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

4

3 回答 3

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
于 2009-12-02T00:07:21.353 回答
1

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

您需要的值需要从 presetShapeDefinitions.xml 计算(通过 Ecma 下载找到它)。您想要的值在wedgeRectCallout 元素中:

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

那么如何计算x=xby=yb?转到 Ecma 文档并查看如何在 DrawingML - Framework Reference Material -> Drawing ML - Main -> Shape Definitions and Attributes -> gd (Shape Guide)中阅读公式并计算形状指南gdLst(取默认值或修改后的调整)。在这种情况下,您需要计算所有/大多数指南以确保您获得 xb 和 yb 的值。

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

于 2009-12-02T19:16:29.230 回答
0

在 presetShapeDefinitions.xml 文件中,它定义了绘制形状所需的参数和公式,如果您查看形状“wedgeRectCallout”,您将看到许多标签,如:<avLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">、、、、和。 了解如何绘制形状所需的重要标签是:和. 包含形状的公式,并说明如何绘制形状。 我编写了一个小程序,将文件presetShapeDefinitions.xml 中的所有公式转换为javascript。 到程序的网站页面点击这里。 这个程序帮助我构建了将 PPTX 文件转换为 HTML的PPTXjs插件。<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>



希望这可以帮助。

于 2017-10-26T16:28:00.433 回答