Управление объектами Ink презентации в PHP

PowerPoint предоставляет функцию распознавания вводимых линий, позволяющую рисовать нестандартные фигуры, которые можно использовать для выделения других объектов, отображения соединений и процессов, а также привлечения внимания к конкретным элементам на слайде.

Aspose.Slides предоставляет все типы Ink (например, класс Ink), необходимые для создания и управления объектами ввода.

Различия между обычными объектами и объектами Ink

Объекты на слайде PowerPoint обычно представлены объектами shape. Объект shape в своей простейшей форме представляет собой контейнер, определяющий область самого объекта (его рамку) вместе со свойствами. К последним относятся размер контейнера, форма контейнера, фон контейнера и т.д. Для получения информации см. Shape Layout Format.

Однако, когда PowerPoint работает с объектом ink, он игнорирует все свойства рамки объекта (контейнера), кроме его размера. Размер области контейнера определяется стандартными значениями width и height:

ink_powerpoint1

Трассы Inkshape

Трасса — это базовый элемент или стандарт, используемый для записи траектории пера, когда пользователь пишет цифровыми чернилами. Трассы представляют собой записи, описывающие последовательности соединенных точек.

Самая простая форма кодирования указывает координаты X и Y каждой точки выборки. При отрисовке всех соединенных точек получаем изображение, подобное этому:

ink_powerpoint2

Свойства кисти для рисования

Можно использовать кисть для рисования линий, соединяющих точки элементов трассы. Кисть имеет собственный цвет и размер, соответствующие свойствам Brush.Color и Brush.Size.

Установка цвета кисти Ink

Этот PHP‑код показывает, как задать цвет для кисти:

  $pres = new Presentation("pres.pptx");
  try {
    $ink = $pres->getSlides()->get_Item(0)->getShapes()->get_Item(0);
    $traces = $ink->getTraces();
    $brush = $traces[0]->getBrush();
    $brushColor = $brush->getColor();
    $brush->setColor(java("java.awt.Color")->RED);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

Установка размера кисти Ink

Этот PHP‑код показывает, как задать размер для кисти:

  $pres = new Presentation("pres.pptx");
  try {
    $ink = $pres->getSlides()->get_Item(0)->getShapes()->get_Item(0);
    $traces = $ink->getTraces();
    $brush = $traces[0]->getBrush();
    $brushSize = $brush->getSize();
    $brush->setSize(new Java("java.awt.Dimension", 5, 10));
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

Обычно ширина и высота кисти не совпадают, поэтому PowerPoint не отображает размер кисти (раздел данных затемнён). Но когда ширина и высота кисти совпадают, PowerPoint отображает её размер так:

ink_powerpoint3

Для наглядности увеличим высоту объекта ink и рассмотрим важные размеры:

ink_powerpoint4

Контейнер (рамка) не учитывает размер кистей — он всегда предполагает, что толщина линии равна нулю (см. последнее изображение).

Следовательно, чтобы определить видимую область всего объекта ink, необходимо учитывать размер кисти у объектов трассы. Здесь целевой объект (объект трассы рукописного текста) масштабирован до размера контейнера (рамки). При изменении размера контейнера (рамки) размер кисти остаётся постоянным, и наоборот.

ink_powerpoint5

PowerPoint проявляет такое же поведение при работе с текстом:

ink_powerpoint6

Дополнительные материалы

  • Чтобы прочитать о фигурах в целом, см. раздел PowerPoint Shapes.
  • Для получения дополнительной информации о эффективных значениях см. Shape Effective Properties.