# Управление узлами SmartArt в презентациях с помощью C++

> Управляйте узлами SmartArt в презентациях PPT и PPTX с помощью Aspose.Slides для C++. Получите понятные примеры кода и советы для оптимизации ваших презентаций.

Source: https://docs.aspose.com/slides/ru/cpp/manage-smartart-shape-node/
Updated: 2025-12-10


## **Добавить узел SmartArt**
Aspose.Slides for C++ предоставил самый простой API для управления фигурами SmartArt самым простым способом. Ниже приведён пример кода, который поможет добавить узел и дочерний узел внутри фигуры SmartArt.

- Создайте экземпляр класса [Presentation](https://reference.aspose.com/slides/cpp/aspose.slides/presentation/) и загрузите презентацию с фигурой SmartArt.
- Получите ссылку на первый слайд, используя его индекс.
- Пройдитесь по всем фигурам на первом слайде.
- Проверьте, является ли фигура типом SmartArt, и приведите выбранную фигуру к SmartArt, если это SmartArt.
- Добавьте новый узел в коллекцию NodeCollection фигуры SmartArt и задайте текст в TextFrame.
- Затем добавьте дочерний узел в только что добавленный узел SmartArt и задайте текст в TextFrame.
- Сохраните презентацию.

{{< gist "aspose-slides" "a690df625dc0b1fff869ab198affe7a4" "Examples-SlidesCPP-AddNodes-AddNodes.cpp" >}}

## **Добавить узел SmartArt в определённой позиции**
В следующем примере кода мы объяснили, как добавить дочерние узлы, принадлежащие соответствующим узлам фигуры SmartArt, в определённую позицию.

- Создайте экземпляр класса `Presentation`.
- Получите ссылку на первый слайд, используя его индекс.
- Добавьте фигуру SmartArt типа StackedList на выбранный слайд.
- Получите доступ к первому узлу добавленной фигуры SmartArt.
- Затем добавьте дочерний узел для выбранного узла на позицию 2 и задайте его текст.
- Сохраните презентацию.

{{< gist "aspose-slides" "a690df625dc0b1fff869ab198affe7a4" "Examples-SlidesCPP-AddNodesSpecificPosition-AddNodesSpecificPosition.cpp" >}}

## **Доступ к узлу SmartArt**
Следующий пример кода поможет получить доступ к узлам внутри фигуры SmartArt. Обратите внимание, что вы не можете изменить LayoutType у SmartArt, так как он только для чтения и задаётся только при добавлении фигуры SmartArt.

- Создайте экземпляр класса `Presentation` и загрузите презентацию с фигурой SmartArt.
- Получите ссылку на первый слайд, используя его индекс.
- Пройдитесь по всем фигурам на первом слайде.
- Проверьте, является ли фигура типом SmartArt, и приведите выбранную фигуру к SmartArt, если это SmartArt.
- Пройдитесь по всем узлам внутри фигуры SmartArt.
- Получите и отобразите информацию, такую как позиция узла SmartArt, уровень и текст.

{{< gist "aspose-slides" "a690df625dc0b1fff869ab198affe7a4" "Examples-SlidesCPP-AccessSmartArt-AccessSmartArt.cpp" >}}

## **Доступ к дочернему узлу SmartArt**
Следующий пример кода поможет получить доступ к дочерним узлам, принадлежащим соответствующим узлам фигуры SmartArt.

- Создайте экземпляр класса PresentationEx и загрузите презентацию с фигурой SmartArt.
- Получите ссылку на первый слайд, используя его индекс.
- Пройдитесь по всем фигурам на первом слайде.
- Проверьте, является ли фигура типом SmartArt, и приведите выбранную фигуру к SmartArtEx, если это SmartArt.
- Пройдитесь по всем узлам внутри фигуры SmartArt.
- Для каждого выбранного узла фигуры SmartArt пройдитесь по всем дочерним узлам внутри конкретного узла.
- Получите и отобразите информацию, такую как позиция дочернего узла, уровень и текст.

{{< gist "aspose-slides" "a690df625dc0b1fff869ab198affe7a4" "Examples-SlidesCPP-AccessChildNodes-AccessChildNodes.cpp" >}}

## **Доступ к дочернему узлу SmartArt в определённой позиции**
В этом примере мы научимся получать доступ к дочерним узлам в определённой позиции, принадлежащим соответствующим узлам фигуры SmartArt.

- Создайте экземпляр класса `Presentation`.
- Получите ссылку на первый слайд, используя его индекс.
- Добавьте фигуру SmartArt типа StackedList.
- Получите доступ к добавленной фигуре SmartArt.
- Получите узел с индексом 0 у выбранной фигуры SmartArt.
- Затем получите дочерний узел на позиции 1 у выбранного узла SmartArt, используя метод GetNodeByPosition().
- Получите и отобразите информацию, такую как позиция дочернего узла, уровень и текст.

{{< gist "aspose-slides" "a690df625dc0b1fff869ab198affe7a4" "Examples-SlidesCPP-AccessChildNodeSpecificPosition-AccessChildNodeSpecificPosition.cpp" >}}

## **Удалить узел SmartArt**
В этом примере мы научимся удалять узлы внутри фигуры SmartArt.

- Создайте экземпляр класса `Presentation` и загрузите презентацию с фигурой SmartArt.
- Получите ссылку на первый слайд, используя его индекс.
- Пройдитесь по всем фигурам на первом слайде.
- Проверьте, является ли фигура типом SmartArt, и приведите выбранную фигуру к SmartArt, если это SmartArt.
- Убедитесь, что у SmartArt более 0 узлов.
- Выберите узел SmartArt, который нужно удалить.
- Теперь удалите выбранный узел, используя метод RemoveNode(). Сохраните презентацию.

{{< gist "aspose-slides" "a690df625dc0b1fff869ab198affe7a4" "Examples-SlidesCPP-RemoveNode-RemoveNode.cpp" >}}

## **Удалить узел SmartArt в определённой позиции**
В этом примере мы научимся удалять узлы внутри фигуры SmartArt в определённой позиции.

- Создайте экземпляр класса `Presentation` и загрузите презентацию с фигурой SmartArt.
- Получите ссылку на первый слайд, используя его индекс.
- Пройдитесь по всем фигурам на первом слайде.
- Проверьте, является ли фигура типом SmartArt, и приведите выбранную фигуру к SmartArt, если это SmartArt.
- Выберите узел фигуры SmartArt с индексом 0.
- Затем проверьте, имеет ли выбранный узел SmartArt более 2 дочерних узлов.
- Затем удалите узел на позиции 1, используя метод RemoveNodeByPosition().
- Сохраните презентацию.

{{< gist "aspose-slides" "a690df625dc0b1fff869ab198affe7a4" "Examples-SlidesCPP-RemoveNodeSpecificPosition-RemoveNodeSpecificPosition.cpp" >}}

## **Установить пользовательскую позицию для дочернего узла SmartArt**
Теперь Aspose.Slides поддерживает установку свойств X и Y для SmartArtShape. Ниже представленный фрагмент кода показывает, как задать пользовательскую позицию, размер и вращение SmartArtShape; также обратите внимание, что добавление новых узлов приводит к перерасчёту позиций и размеров всех узлов.

{{< gist "aspose-slides" "a690df625dc0b1fff869ab198affe7a4" "Examples-SlidesCPP-CustomChildNodesInSmartArt-CustomChildNodesInSmartArt.cpp" >}}

## **Проверить узел‑помощник**
В следующем примере кода мы исследуем, как определить узлы‑помощники в коллекции узлов SmartArt и изменять их.

- Создайте экземпляр класса PresentationEx и загрузите презентацию с фигурой SmartArt.
- Получите ссылку на второй слайд, используя его индекс.
- Пройдитесь по всем фигурам на первом слайде.
- Проверьте, является ли фигура типом SmartArt, и приведите выбранную фигуру к SmartArtEx, если это SmartArt.
- Пройдитесь по всем узлам внутри фигуры SmartArt и проверьте, являются ли они узлами‑помощниками.
- Измените статус узла‑помощника на обычный узел.
- Сохраните презентацию.

{{< gist "aspose-slides" "a690df625dc0b1fff869ab198affe7a4" "Examples-SlidesCPP-AssistantNode-AssistantNode.cpp" >}}

## **Установить формат заливки узла**
Aspose.Slides for C++ позволяет добавлять пользовательские фигуры SmartArt и задавать их форматы заливки. Эта статья объясняет, как создавать и получать доступ к фигурам SmartArt и устанавливать их формат заливки с помощью Aspose.Slides for C++.

Выполните следующие шаги:

- Создайте экземпляр класса `Presentation`.
- Получите ссылку на слайд, используя его индекс.
- Добавьте фигуру SmartArt, задав её LayoutType.
- Установите FillFormat для узлов фигуры SmartArt.
- Сохраните изменённую презентацию в виде файла PPTX.

{{< gist "aspose-slides" "a690df625dc0b1fff869ab198affe7a4" "Examples-SlidesCPP-FillFormatSmartArtShapeNode-FillFormatSmartArtShapeNode.cpp" >}}

## **Создать миниатюру дочернего узла SmartArt**
Разработчики могут создать миниатюру дочернего узла SmartArt, выполнив следующие шаги:

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

Ниже показан пример создания миниатюры дочернего узла SmartArt
```cpp
auto presentation = MakeObject<Presentation>();
auto slide = presentation->get_Slide(0);

auto smartArt = slide->get_Shapes()->AddSmartArt(10, 10, 400, 300, SmartArtLayoutType::BasicCycle);
auto node = smartArt->get_Node(1);

auto image = node->get_Shape(0)->GetImage();
image->Save(u"SmartArt_ChildNote_Thumbnail_out.jpeg", ImageFormat::Png);
image->Dispose();

presentation->Dispose();
```


## **FAQ**

**Поддерживает ли анимацию SmartArt?**

Да. SmartArt рассматривается как обычная фигура, поэтому вы можете [применять стандартные анимации](/slides/ru/cpp/shape-animation/) (вход, выход, акцент, траектории движения) и настраивать их длительность. При необходимости можно также анимировать фигуры внутри узлов SmartArt.

**Как надёжно найти конкретный SmartArt на слайде, если его внутренний ID неизвестен?**

Назначьте и ищите по [альтернативному тексту](https://reference.aspose.com/slides/cpp/aspose.slides/shape/set_alternativetext/). Установив отличительный AltText для SmartArt, вы сможете найти его программно, не полагаясь на внутренние идентификаторы.

**Сохранится ли внешний вид SmartArt при конвертации презентации в PDF?**

Да. Aspose.Slides отображает SmartArt с высокой визуальной точностью при [экспорте в PDF](/slides/ru/cpp/convert-powerpoint-to-pdf/), сохраняя макет, цвета и эффекты.

**Можно ли извлечь изображение всего SmartArt (для превью или отчётов)?**

Да. Вы можете отрисовать фигуру SmartArt в [растровые форматы](https://reference.aspose.com/slides/cpp/aspose.slides/shape/getimage/) или в [SVG](https://reference.aspose.com/slides/cpp/aspose.slides/shape/writeassvg/) для масштабируемого векторного вывода, что делает его подходящим для миниатюр, отчётов или веб‑использования.
