سؤال

أنا أبحث في رسم ملف PowerPoint 2007، وهذا هو ما لديه إحداثيات وكائن 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

ولكن، فإن القيمة الهندسية ليست المسافة بين النقاطين.

أي شخص يعرف ما هي الصيغة لحساب هذا؟

هل كانت مفيدة؟

المحلول

أعتقد أنني أحسب الصيغة:

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

نصائح أخرى

قد تكون هذه طريقة سريعة سريعة للقيام بذلك إذا كانت التعديلات متوفرة - لم أختبرها. ومع ذلك، إذا فهمت ما تسأله، فهذا هو كيفية الحصول على X / Y من نقطة الذيل Wedgerectcallout في موقع معين على الشاشة، بما في ذلك الحالة التي يتم فيها ضبط حجم / موقع الذيل. أفترض أن لديك حجم محدد مسبقا من Wedgerectcallout.

يجب حساب القيمة التي تريدها من presetshapedefinitions.xml (ابحث عنها بتنزيلات ECMA). القيمة التي تريدها هنا في عنصر WedgerectCallout:

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

فكيف تحسب x=xb و y=ybب انتقل إلى مستندات ECMA وعرض كيفية قراءة الصيغ فيMAPLML - المواد المرجعية الإملائية -> الرسم ML - Main -> تشكيل التعريفات والسمات -> GD (دليل الشكل) وحساب أدلة الشكل في gdLst (الذي يأخذ قيمة التعديلات الافتراضية أو المعدلة). في هذه الحالة، ستحتاج إلى حساب جميع / معظم الأدلة للتأكد من حصولك على قيم XB و YB.

اسمحوا لي أن أعرف إذا واجهت أي مشاكل أو لديك المزيد من الأسئلة في هذا.

في ملف 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> يقول كيفية رسم الشكل.
كتبت برنامجا صغيرا يترجم إلى جافا سكريبت جميع الصيغ في ملف Prestshapedefinitions.xml.
إلى صفحة موقع الويب من البرنامج هنا.
ساعدني هذا البرنامج في بناء pptxjs. البرنامج المساعد الذي يحول ملفات PPTX إلى HTML.
أتمنى أن يساعدك هذا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top