Question

Je suis à la recherche au DrawingML d'un fichier PowerPoint 2007 et voici ce qu'il a pour les coordonnées et la géométrie de l'objet 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>

Ce que je vais avoir des problèmes avec la formule pour dire à placer la queue à une coordonnée particulière sur la diapositive. J'ai essayé cela de calculer, mais il ne fonctionne pas correctement.

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

Mais, la valeur géométrique ne soit pas la distance entre les deux points.

Quelqu'un sait ce que la formule est pour le calcul de cela?

Était-ce utile?

La solution

Je pense que j'ai compris la formule:

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

Autres conseils

Cela peut être un bon moyen rapide de le faire si les ajustements sont disponibles - je ne l'ai pas testé. Cependant, si je comprends ce que vous demandez, il est de savoir comment obtenir le x / y du point de queue de wedgeRectCallout à un endroit particulier à l'écran, y compris le cas où la taille / emplacement de la queue est ajustée. Je suppose que vous avez une taille prédéfinie du wedgeRectCallout.

La valeur que vous voulez doit être calculé à partir presetShapeDefinitions.xml (trouver les téléchargements Ecma). La valeur que vous voulez est ici dans l'élément wedgeRectCallout:

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

Alors, comment calculez-vous x=xb et y=yb? Aller à la documentation Ecma et voir comment lire formules DrawingML - Cadre de référence Matériel -> Dessin ML - Main -> Définitions de forme et attributs -> GD (forme Guide) et calculer les guides de forme dans gdLst (qui prend la valeur des ajustements par défaut ou modifiés). Dans ce cas, vous devrez calculer tous / la plupart des guides pour vous assurer d'obtenir les valeurs XB et yb.

Faites-moi savoir si vous rencontrez des problèmes ou qui ont d'autres questions à ce sujet.

dans le fichier presetShapeDefinitions.xml, qui définit les parametrs et les formules nécessaires pour dessiner les formes, si youe regard sur la forme « wedgeRectCallout » vous verrez nombre de balises comme: <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" /> et <pathLst xmlns="http://schemas.openxmlformats.org/drawingml/2006/main">.
Les balises importantes du besoin de comprendre comment dessiner la forme sont les suivants: <gdLst> et <pathLst>.<gdLst> Contient les formules de la forme, et <pathLst> dit comment dessiner la forme
. J'ai écrit un petit programme qui se traduit par javascript toutes les formules dans le fichier presetShapeDefinitions.xml.
Pour la page du site du programme cliquez .
Ce programme m'a aidé à construire PPTXjs plug-in qui convertit les fichiers PPTX en HTML.
Espérons que cela aide.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top