В PowerPoint 2007 как программно расположить хвост выноски?
Я смотрю на DrawingML файла 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
Но геометрическое значение не является расстоянием между двумя точками.
Кто-нибудь знает, что формула для расчета этого?
3 ответа
Я думаю, что я понял формулу:
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
Это может быть хорошим быстрым способом сделать это, если настройки доступны - я не проверял это. Тем не менее, если я понимаю, что вы спрашиваете, это то, как получить х / у хвостовой точки wedgeRectCallout в определенном месте на экране, включая случай, когда размер / местоположение хвоста корректируется. Я предполагаю, что у вас есть предопределенный размер wedgeRectCallout.
Требуемое значение необходимо рассчитать из presetShapeDefinitions.xml (найдите его при загрузке Ecma). Требуемое значение находится здесь в элементе wedgeRectCallout:
<lnTo>
<pt x="xb" y="yb" />
</lnTo>
Так как вы рассчитываете x=xb
а также y=yb
? Перейдите к документации по Ecma и узнайте, как читать формулы в DrawingML - Справочный материал по платформам -> Drawing 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>
говорит, как нарисовать форму.
Я написал небольшую программу, которая переводит в javascript все формулы в файле presetShapeDefinitions.xml.
На страницу сайта программы нажмите здесь.
Эта программа помогла мне создать плагин PPTXjs, который конвертирует файлы PPTX в HTML.
Надеюсь это поможет.