Pregunta

Estoy mirando el DrawingML de un archivo de PowerPoint 2007 y esto es lo que tiene para las coordenadas y la geometría del objeto 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>

Lo que tengo problemas es la fórmula para decirle que coloque la cola en una coordenada particular en la diapositiva.Intenté esto para calcularlo, pero no funciona correctamente.

//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

Pero el valor geométrico no es la distancia entre los dos puntos.

¿Alguien sabe cuál es la fórmula para calcular esto?

¿Fue útil?

Solución

Creo que he descubierto la fórmula:

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

Otros consejos

Esto puede ser una buena manera rápida de hacer esto si los ajustes están disponibles - Yo no lo he probado. Sin embargo, si entiendo lo que estás pidiendo, es cómo obtener la X / Y del punto de la cola del wedgeRectCallout en un lugar determinado en la pantalla, incluyendo el caso en el que se ajusta el tamaño / ubicación de la cola. Asumo que tiene un tamaño predefinido del wedgeRectCallout.

El valor que desea necesita ser calculada a partir de presetShapeDefinitions.xml (encontrarla con las descargas de Ecma). El valor que se desea es aquí en el elemento wedgeRectCallout:

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

Entonces, ¿Cómo se calcula x=xb y y=yb? Ir a los documentos de Ecma y ver cómo leer en fórmulas DrawinML - Marco Material de referencia -> Dibujo ML - Principal -> Definiciones forma y Atributos -> gd (forma de Guía) y calcular las guías de forma en gdLst (que toma el valor de defecto o ajustes modificados). En este caso, tendrá que calcular todos / la mayoría de guías para asegurarse de obtener los valores para xb y yb.

Quiero saber si de que tenga algún problema o tiene más preguntas sobre este tema.

en el archivo presetShapeDefinitions.xml, que define los parámetros y fórmulas necesarios para dibujar las formas. Si observa la forma "wedgeRectCallout", verá varias etiquetas como: <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" /> y <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">.
Las etiquetas importantes necesarias para entender cómo dibujar la forma son: <gdLst> y <pathLst>.<gdLst> Contiene las fórmulas de la forma, y <pathLst> dice cómo dibujar la forma.
Escribí un pequeño programa que traduce a javascript todas las fórmulas en el archivo presetShapeDefinitions.xml.
Para ir a la página web del programa, haga clic aquí.
Este programa me ayudó a construir el PPTXjs Complemento que convierte archivos PPTX a HTML.
Espero que esto ayude.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top