Манипуляции с Формами

Найти Форму на Слайде

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

После установки альтернативного текста для любой желаемой формы вы можете открыть эту презентацию, используя Aspose.Slides для C++, и перебрать все формы, добавленные на слайд. Во время каждой итерации вы можете проверить альтернативный текст формы, и форма с совпадающим альтернативным текстом будет той формой, которая вам требуется. Чтобы продемонстрировать эту технику наилучшим образом, мы создали метод, FindShape, который выполняет поиск определенной формы на слайде и просто возвращает эту форму.

Клонировать Форму

Чтобы клонировать форму на слайд с использованием Aspose.Slides для C++:

  1. Создайте экземпляр класса Presentation.
  2. Получите ссылку на слайд, используя его индекс.
  3. Получите коллекцию форм исходного слайда.
  4. Добавьте новый слайд в презентацию.
  5. Клонируйте формы из коллекции форм исходного слайда на новый слайд.
  6. Сохраните измененную презентацию в формате PPTX.

В приведенном ниже примере к слайду добавляется групповая форма.

Удалить Форму

Aspose.Slides для C++ позволяет разработчикам удалять любую форму. Чтобы удалить форму с любого слайда, выполните следующие шаги:

  1. Создайте экземпляр класса Presentation.
  2. Получите доступ к первому слайду.
  3. Найдите форму с определенным альтернативным текстом.
  4. Удалите форму.
  5. Сохраните файл на диске.

Скрыть Форму

Aspose.Slides для C++ позволяет разработчикам скрывать любую форму. Чтобы скрыть форму с любого слайда, выполните следующие шаги:

  1. Создайте экземпляр класса Presentation.
  2. Получите доступ к первому слайду.
  3. Найдите форму с определенным альтернативным текстом.
  4. Скрыть форму.
  5. Сохраните файл на диске.

Изменить Порядок Форм

Aspose.Slides для C++ позволяет разработчикам изменять порядок форм. Изменение порядка форм определяет, какая форма находится впереди или сзади. Чтобы изменить порядок формы на любом слайде, выполните следующие шаги:

  1. Создайте экземпляр класса Presentation.
  2. Получите доступ к первому слайду.
  3. Добавьте форму.
  4. Добавьте некоторый текст в текстовую рамку формы.
  5. Добавьте другую форму с теми же координатами.
  6. Измените порядок форм.
  7. Сохраните файл на диске.

Получить Interop Shape ID

Aspose.Slides для C++ позволяет разработчикам получать уникальный идентификатор формы в области слайда в контексте свойства UniqueId, которое позволяет получить уникальный идентификатор в области презентации. Свойство OfficeInteropShapeId было добавлено к интерфейсам IShape и классу Shape соответственно. Значение, возвращаемое свойством OfficeInteropShapeId, соответствует значению Id объекта Microsoft.Office.Interop.PowerPoint.Shape. Приведен пример кода.

Установить Свойство AlternativeText

Aspose.Slides для C++ позволяет разработчикам устанавливать альтернативный текст для любой формы. Чтобы установить альтернативный текст для формы, выполните следующие шаги:

  1. Создайте экземпляр класса Presentation.
  2. Получите доступ к первому слайду.
  3. Добавьте любую форму на слайд.
  4. Выполните некоторые действия с вновь добавленной формой.
  5. Переберите формы, чтобы найти нужную.
  6. Установите альтернативный текст.
  7. Сохраните файл на диске.

Получить Форматы Макета для Формы

Aspose.Slides для C++ позволяет разработчикам получать форматы макета для формы. Эта статья демонстрирует, как вы можете получить свойства FillFormat и LineFormat для формы.

Приведен пример кода.

Отобразить Форму как SVG

Теперь Aspose.Slides для C++ поддерживает отображение формы как svg. Метод WriteAsSvg (и его перегрузка) был добавлен в класс Shape и интерфейс IShape. Этот метод позволяет сохранять содержимое формы в виде SVG-файла. Ниже приведен фрагмент кода, показывающий, как экспортировать форму слайда в SVG-файл.

String outSvgFileName = u"SingleShape.svg";

auto pres = System::MakeObject<Presentation>(u"TestExportShapeToSvg.pptx");

auto stream = System::MakeObject<FileStream>(outSvgFileName, FileMode::Create, FileAccess::Write);
pres->get_Slides()->idx_get(0)->get_Shapes()->idx_get(0)->WriteAsSvg(stream);

Выравнивание Форм

Aspose.Slides позволяет выравнивать формы либо относительно полей слайда, либо относительно друг друга. Для этой цели был добавлен перегруженный метод SlidesUtil.AlignShapes(). Перечисление ShapesAlignmentType определяет возможные параметры выравнивания.

Пример 1

Исходный код ниже выравнивает формы с индексами 1, 2 и 4 вдоль верхней границы слайда.

SharedPtr<Presentation> pres = System::MakeObject<Presentation>(u"example.pptx");

SharedPtr<ISlide> slide = pres->get_Slides()->idx_get(0);
SharedPtr<IShape> shape1 = slide->get_Shapes()->idx_get(1);
SharedPtr<IShape> shape2 = slide->get_Shapes()->idx_get(2);
SharedPtr<IShape> shape3 = slide->get_Shapes()->idx_get(4);
SlideUtil::AlignShapes(ShapesAlignmentType::AlignTop, true, pres->get_Slides()->idx_get(0), 
System::MakeArray<int32_t>(
    {
        slide->get_Shapes()->IndexOf(shape1),
        slide->get_Shapes()->IndexOf(shape2),
        slide->get_Shapes()->IndexOf(shape3)
    }));

Пример 2

Пример ниже показывает, как выровнять всю коллекцию форм относительно самой нижней формы в коллекции.

SharedPtr<Presentation> pres = MakeObject<Presentation>(u"example.pptx");
SlideUtil::AlignShapes(ShapesAlignmentType::AlignBottom, false, pres->get_Slides()->idx_get(0)->get_Shapes());