Verwalten von SmartArt-Form-Knoten

SmartArt-Knoten hinzufügen

Aspose.Slides für C++ bietet die einfachste API, um die SmartArt-Formen auf einfachste Weise zu verwalten. Der folgende Beispielcode hilft dabei, Knoten und Kindknoten innerhalb der SmartArt-Form hinzuzufügen.

  • Erstellen Sie eine Instanz der Presentation Klasse und laden Sie die Präsentation mit der SmartArt-Form.
  • Erhalten Sie die Referenz der ersten Folie, indem Sie ihren Index verwenden.
  • Durchlaufen Sie jede Form in der ersten Folie.
  • Überprüfen Sie, ob die Form vom SmartArt-Typ ist, und typisieren Sie die ausgewählte Form in SmartArt, wenn es sich um SmartArt handelt.
  • Fügen Sie einen neuen Knoten in die NodeCollection der SmartArt-Form hinzu und setzen Sie den Text im TextFrame.
  • Fügen Sie jetzt einen Kindknoten im neu hinzugefügten SmartArt-Knoten hinzu und setzen Sie den Text im TextFrame.
  • Speichern Sie die Präsentation.
For complete examples and data files, please go to https://github.com/aspose-slides/Aspose.Slides-for-C
// The path to the documents directory.
const String outPath = u"../out/AddNodes_out.pptx";
// Load the desired the presentation
SharedPtr<Presentation> pres = MakeObject<Presentation>();
// Add SmartArt BasicProcess
System::SharedPtr<Aspose::Slides::SmartArt::ISmartArt> smart = pres->get_Slides()->idx_get(0)->get_Shapes()->AddSmartArt(10, 10, 400, 300, SmartArtLayoutType::StackedList);
if (smart->get_AllNodes()->get_Count() > 0)
{
// Accessing SmartArt node at index 0
System::SharedPtr<Aspose::Slides::SmartArt::ISmartArtNode> node = smart->get_AllNodes()->AddNode();
// Add Text
node->get_TextFrame()->set_Text(u"Test");
// SharedPtr<ISmartArtNodeCollection> nodeCollection = System::DynamicCast_noexcept<ISmartArtNodeCollection>(node->get_ChildNodes()); ;
auto nodeCollection = node->get_ChildNodes() ;
// Adding new child node at end of parent node
SharedPtr<ISmartArtNode> chNode = nodeCollection->AddNode();
// Add Text
chNode->get_TextFrame()->set_Text(u"Sample Text Added");
}
// Save Presentation
pres->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptx);

SmartArt-Knoten an einer bestimmten Position hinzufügen

Im folgenden Beispielcode wird erläutert, wie man die zugehörigen Kindknoten der SmartArt-Form an einer bestimmten Position hinzufügt.

  • Erstellen Sie eine Instanz der Presentation Klasse.
  • Erhalten Sie die Referenz der ersten Folie, indem Sie ihren Index verwenden.
  • Fügen Sie in der aufgerufenen Folie eine SmartArt-Form vom Typ StackedList hinzu.
  • Greifen Sie auf den ersten Knoten in der hinzugefügten SmartArt-Form zu.
  • Fügen Sie jetzt den Kindknoten für den ausgewählten Knoten an Position 2 hinzu und setzen Sie dessen Text.
  • Speichern Sie die Präsentation.
For complete examples and data files, please go to https://github.com/aspose-slides/Aspose.Slides-for-C
// The path to the documents directory.
const String outPath = u"../out/AddNodesSpecificPosition_out.pptx";
// Load the desired the presentation
SharedPtr<Presentation> pres = MakeObject<Presentation>();
// Add SmartArt BasicProcess
System::SharedPtr<Aspose::Slides::SmartArt::ISmartArt> smart = pres->get_Slides()->idx_get(0)->get_Shapes()->AddSmartArt(10, 10, 400, 300, SmartArtLayoutType::StackedList);
if (smart->get_AllNodes()->get_Count() > 0)
{
// Accessing SmartArt node at index 0
System::SharedPtr<Aspose::Slides::SmartArt::SmartArtNode> node0 = System::DynamicCast_noexcept<Aspose::Slides::SmartArt::SmartArtNode>(smart->get_AllNodes()->idx_get(0));
// SharedPtr<ISmartArtNodeCollection> node0Collection = System::DynamicCast_noexcept<ISmartArtNodeCollection>(node0->get_ChildNodes()); ;
SharedPtr<ISmartArtNodeCollection> node0Collection = node0->get_ChildNodes() ;
// Adding new child node at position 2 in parent node
SharedPtr<ISmartArtNode> chNode = node0Collection->AddNodeByPosition(2);
// Add Text
chNode->get_TextFrame()->set_Text(u"Sample Text Added");
}
// Save Presentation
pres->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptx);

SmartArt-Knoten zugreifen

Der folgende Beispielcode hilft dabei, auf Knoten innerhalb der SmartArt-Form zuzugreifen. Bitte beachten Sie, dass Sie den LayoutTyp der SmartArt nicht ändern können, da dieser schreibgeschützt ist und nur beim Hinzufügen der SmartArt-Form festgelegt wird.

  • Erstellen Sie eine Instanz der Presentation Klasse und laden Sie die Präsentation mit der SmartArt-Form.
  • Erhalten Sie die Referenz der ersten Folie, indem Sie ihren Index verwenden.
  • Durchlaufen Sie jede Form in der ersten Folie.
  • Überprüfen Sie, ob die Form vom SmartArt-Typ ist, und typisieren Sie die ausgewählte Form in SmartArt, wenn es sich um SmartArt handelt.
  • Durchlaufen Sie alle Knoten innerhalb der SmartArt-Form.
  • Greifen Sie auf Informationen wie die Position, die Ebene und den Text des SmartArt-Knotens zu und zeigen Sie sie an.
For complete examples and data files, please go to https://github.com/aspose-slides/Aspose.Slides-for-C
// The path to the documents directory.
const String templatePath = u"../templates/SmartArt.pptx";
// Load the desired the presentation
SharedPtr<Presentation> pres = MakeObject<Presentation>(templatePath);
// Traverse through every shape inside first slide
//foreach(IShape shape in pres.Slides[0].Shapes)
for (int x = 0; x<pres->get_Slides()->idx_get(0)->get_Shapes()->get_Count(); x++)
{
SharedPtr<IShape> shape = pres->get_Slides()->idx_get(0)->get_Shapes()->idx_get(x);
if (System::ObjectExt::Is<Aspose::Slides::SmartArt::SmartArt>(shape))
{
System::SharedPtr<Aspose::Slides::SmartArt::SmartArt> smart = System::DynamicCast_noexcept<Aspose::Slides::SmartArt::SmartArt>(shape);
// Traverse through all nodes inside SmartArt
for (int i = 0; i < smart->get_AllNodes()->get_Count(); i++)
{
// Accessing SmartArt node at index i
System::SharedPtr<Aspose::Slides::SmartArt::SmartArtNode> node = System::DynamicCast_noexcept<Aspose::Slides::SmartArt::SmartArtNode>(smart->get_AllNodes()->idx_get(i));
// Printing the SmartArt node parameters
System::Console::WriteLine(u"j = " + node->get_TextFrame()->get_Text() + u", Text = " + node->get_Level() + u", Position = " + node->get_Position());
}
}
}

SmartArt-Kindknoten zugreifen

Der folgende Beispielcode hilft dabei, auf die Kindknoten zuzugreifen, die zu den jeweiligen Knoten der SmartArt-Form gehören.

  • Erstellen Sie eine Instanz der PresentationEx-Klasse und laden Sie die Präsentation mit der SmartArt-Form.
  • Erhalten Sie die Referenz der ersten Folie, indem Sie ihren Index verwenden.
  • Durchlaufen Sie jede Form in der ersten Folie.
  • Überprüfen Sie, ob die Form vom SmartArt-Typ ist, und typisieren Sie die ausgewählte Form in SmartArtEx, wenn es sich um SmartArt handelt.
  • Durchlaufen Sie alle Knoten innerhalb der SmartArt-Form.
  • Für jeden ausgewählten SmartArt-Formknoten durchlaufen Sie alle Kindknoten im jeweiligen Knoten.
  • Greifen Sie auf Informationen wie die Position, die Ebene und den Text des Kindknotens zu und zeigen Sie sie an.
For complete examples and data files, please go to https://github.com/aspose-slides/Aspose.Slides-for-C
// The path to the documents directory.
const String templatePath = u"../templates/SmartArt.pptx";
// Load the desired the presentation
SharedPtr<Presentation> pres = MakeObject<Presentation>(templatePath);
// Traverse through every shape inside first slide
for(int x=0;x<pres->get_Slides()->idx_get(0)->get_Shapes()->get_Count();x++)
{
SharedPtr<IShape> shape = pres->get_Slides()->idx_get(0)->get_Shapes()->idx_get(x);
if (System::ObjectExt::Is<Aspose::Slides::SmartArt::SmartArt>(shape))
{
System::SharedPtr<Aspose::Slides::SmartArt::SmartArt> smart = System::DynamicCast_noexcept<Aspose::Slides::SmartArt::SmartArt>(shape);
// Traverse through all nodes inside SmartArt
for (int i = 0; i < smart->get_AllNodes()->get_Count(); i++)
{
// Accessing SmartArt node at index i
System::SharedPtr<Aspose::Slides::SmartArt::SmartArtNode> node0 = System::DynamicCast_noexcept<Aspose::Slides::SmartArt::SmartArtNode>(smart->get_AllNodes()->idx_get(i));
// Traversing through the child nodes in SmartArt node at index i
for (int j = 0; j < node0->get_ChildNodes()->get_Count(); j++)
{
// Accessing the child node in SmartArt node
System::SharedPtr<Aspose::Slides::SmartArt::SmartArtNode> node = System::DynamicCast_noexcept<Aspose::Slides::SmartArt::SmartArtNode>(node0->get_ChildNodes()->idx_get(j));
// Printing the SmartArt child node parameters
System::Console::WriteLine(u"j = " + node->get_TextFrame()->get_Text()+u", Text = "+ node->get_Level()+u", Position = "+ node->get_Position());
}
}
}
}

SmartArt-Kindknoten an einer bestimmten Position zugreifen

In diesem Beispiel lernen wir, wie man auf die Kindknoten an einer bestimmten Position zugreift, die zu den jeweiligen Knoten der SmartArt-Form gehören.

  • Erstellen Sie eine Instanz der Presentation Klasse.
  • Erhalten Sie die Referenz der ersten Folie, indem Sie ihren Index verwenden.
  • Fügen Sie eine SmartArt-Form vom Typ StackedList hinzu.
  • Greifen Sie auf die hinzugefügte SmartArt-Form zu.
  • Greifen Sie auf den Knoten an Index 0 für die aufgerufene SmartArt-Form zu.
  • Greifen Sie jetzt mit der GetNodeByPosition()-Methode auf den Kindknoten an Position 1 für den aufgerufenen SmartArt-Knoten zu.
  • Greifen Sie auf Informationen wie die Position, die Ebene und den Text des Kindknotens zu und zeigen Sie sie an.
For complete examples and data files, please go to https://github.com/aspose-slides/Aspose.Slides-for-C
// The path to the documents directory.
const String outPath = u"../out/AccessChildNodeSpecificPosition_out.pptx";
// Load the desired the presentation
SharedPtr<Presentation> pres = MakeObject<Presentation>();
// Add SmartArt BasicProcess
System::SharedPtr<Aspose::Slides::SmartArt::ISmartArt> smart = pres->get_Slides()->idx_get(0)->get_Shapes()->AddSmartArt(10, 10, 400, 300, SmartArtLayoutType::StackedList);
if (smart->get_AllNodes()->get_Count() > 0)
{
// Accessing SmartArt node at index 0
SharedPtr<Aspose::Slides::SmartArt::ISmartArtNode> node0 = smart->get_AllNodes()->idx_get(0);
//Accessing child node collection
auto nodeCollection =node0->get_ChildNodes();
SharedPtr<SmartArtNode> foundChild;
int position = 1;
System::SharedPtr<Aspose::Slides::SmartArt::ISmartArtNode> node = node0->get_ChildNodes()->idx_get(position);
// Printing the SmartArt child node parameters
System::Console::WriteLine(u"j = " + node->get_TextFrame()->get_Text() + u", Text = " + node->get_Level() + u", Position = " + node->get_Position());
}

SmartArt-Knoten entfernen

In diesem Beispiel lernen wir, wie man die Knoten innerhalb der SmartArt-Form entfernt.

  • Erstellen Sie eine Instanz der Presentation Klasse und laden Sie die Präsentation mit der SmartArt-Form.
  • Erhalten Sie die Referenz der ersten Folie, indem Sie ihren Index verwenden.
  • Durchlaufen Sie jede Form in der ersten Folie.
  • Überprüfen Sie, ob die Form vom SmartArt-Typ ist, und typisieren Sie die ausgewählte Form in SmartArt, wenn es sich um SmartArt handelt.
  • Überprüfen Sie, ob die SmartArt mehr als 0 Knoten hat.
  • Wählen Sie den zu löschenden SmartArt-Knoten aus.
  • Entfernen Sie jetzt den ausgewählten Knoten mit der RemoveNode()-Methode* Speichern Sie die Präsentation.
For complete examples and data files, please go to https://github.com/aspose-slides/Aspose.Slides-for-C
// The path to the documents directory.
const String templatePath = u"../templates/SmartArt.pptx";
const String outPath = u"../out/RemoveNode_out.pptx";
// Load the desired the presentation
SharedPtr<Presentation> pres = MakeObject<Presentation>(templatePath);
// Traverse through every shape inside first slide
for (int x = 0; x < pres->get_Slides()->idx_get(0)->get_Shapes()->get_Count(); x++)
{
SharedPtr<IShape> shape = pres->get_Slides()->idx_get(0)->get_Shapes()->idx_get(x);
if (System::ObjectExt::Is<Aspose::Slides::SmartArt::SmartArt>(shape))
{
System::SharedPtr<Aspose::Slides::SmartArt::SmartArt> smart = System::DynamicCast_noexcept<Aspose::Slides::SmartArt::SmartArt>(shape);
if (smart->get_AllNodes()->get_Count() > 0)
{
// Accessing SmartArt node at index 0
System::SharedPtr<Aspose::Slides::SmartArt::SmartArtNode> node0 = System::DynamicCast_noexcept<Aspose::Slides::SmartArt::SmartArtNode>(smart->get_AllNodes()->idx_get(0));
// Removing the selected node
smart->get_AllNodes()->RemoveNode(node0);
}
}
}
// Save Presentation
pres->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptx);

SmartArt-Knoten an einer bestimmten Position entfernen

In diesem Beispiel lernen wir, wie man die Knoten innerhalb der SmartArt-Form an einer bestimmten Position entfernt.

  • Erstellen Sie eine Instanz der Presentation Klasse und laden Sie die Präsentation mit der SmartArt-Form.
  • Erhalten Sie die Referenz der ersten Folie, indem Sie ihren Index verwenden.
  • Durchlaufen Sie jede Form in der ersten Folie.
  • Überprüfen Sie, ob die Form vom SmartArt-Typ ist, und typisieren Sie die ausgewählte Form in SmartArt, wenn es sich um SmartArt handelt.
  • Wählen Sie den SmartArt-Formknoten an Index 0 aus.
  • Überprüfen Sie jetzt, ob der ausgewählte SmartArt-Knoten mehr als 2 Kindknoten hat.
  • Entfernen Sie nun den Knoten an Position 1 mit der RemoveNodeByPosition()-Methode.
  • Speichern Sie die Präsentation.
For complete examples and data files, please go to https://github.com/aspose-slides/Aspose.Slides-for-C
// The path to the documents directory.
const String templatePath = u"../templates/SmartArt.pptx";
const String outPath = u"../out/RemoveSmartArtNodeByPosition_out.pptx";
// Load the desired the presentation
SharedPtr<Presentation> pres = MakeObject<Presentation>(templatePath);
// Traverse through every shape inside first slide
for (int x = 0; x < pres->get_Slides()->idx_get(0)->get_Shapes()->get_Count(); x++)
{
SharedPtr<IShape> shape = pres->get_Slides()->idx_get(0)->get_Shapes()->idx_get(x);
if (System::ObjectExt::Is<Aspose::Slides::SmartArt::SmartArt>(shape))
{
System::SharedPtr<Aspose::Slides::SmartArt::SmartArt> smart = System::DynamicCast_noexcept<Aspose::Slides::SmartArt::SmartArt>(shape);
if (smart->get_AllNodes()->get_Count() > 0)
{
// Accessing SmartArt node at index 0
System::SharedPtr<Aspose::Slides::SmartArt::SmartArtNode> node0 = System::DynamicCast_noexcept<Aspose::Slides::SmartArt::SmartArtNode>(smart->get_AllNodes()->idx_get(0));
if (node0->get_ChildNodes()->get_Count() >= 2)
{
// Removing the child node at position 1
node0->get_ChildNodes()->RemoveNode(1);
}
}
}
}
// Save Presentation
pres->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptx);

Benutzerdefinierte Position für SmartArt-Kindknoten festlegen

Nun unterstützt Aspose.Slides für .NET die Einstellung der X- und Y-Eigenschaften von SmartArtShape. Der folgende Codeausschnitt zeigt, wie man die benutzerdefinierte Position, Größe und Drehung von SmartArtShape festlegt; bitte beachten Sie, dass das Hinzufügen neuer Knoten eine Neuberechnung der Positionen und Größen aller Knoten verursacht.

For complete examples and data files, please go to https://github.com/aspose-slides/Aspose.Slides-for-C
// Load the desired the presentation
SharedPtr<Presentation> pres = MakeObject<Presentation>();
System::SharedPtr<ISmartArt> smart = pres->get_Slides()->idx_get(0)->get_Shapes()->AddSmartArt(20, 20, 600, 500, Aspose::Slides::SmartArt::SmartArtLayoutType::OrganizationChart);
// Move SmartArt shape to new position
System::SharedPtr<ISmartArtNode> node = smart->get_AllNodes()->idx_get(1);
System::SharedPtr<ISmartArtShape> shape = node->get_Shapes()->idx_get(1);
shape->set_X((float)(shape->get_X() + (shape->get_Width() * 2)));
shape->set_Y((float)(shape->get_Y() - (shape->get_Height() / 2)));
// Change SmartArt shape's widths
node = smart->get_AllNodes()->idx_get(2);
shape = node->get_Shapes()->idx_get(1);
shape->set_Width(shape->get_Width() + (shape->get_Width() / 2));
// Change SmartArt shape's height
node = smart->get_AllNodes()->idx_get(3);
shape = node->get_Shapes()->idx_get(1);
shape->set_Height(shape->get_Height() + (shape->get_Height() / 2));
// Change SmartArt shape's rotation
node = smart->get_AllNodes()->idx_get(4);
shape = node->get_Shapes()->idx_get(1);
shape->set_Rotation(90);
// Save Presentation
pres->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptx);

Assistentenknoten überprüfen

Im folgenden Beispielcode werden wir untersuchen, wie man Assistenzknoten in der Sammlung von SmartArt-Knoten identifiziert und ändert.

  • Erstellen Sie eine Instanz der PresentationEx-Klasse und laden Sie die Präsentation mit der SmartArt-Form.
  • Erhalten Sie die Referenz der zweiten Folie, indem Sie ihren Index verwenden.
  • Durchlaufen Sie jede Form in der ersten Folie.
  • Überprüfen Sie, ob die Form vom SmartArt-Typ ist, und typisieren Sie die ausgewählte Form in SmartArtEx, wenn es sich um SmartArt handelt.
  • Durchlaufen Sie alle Knoten innerhalb der SmartArt-Form und überprüfen Sie, ob es sich um Assistenzknoten handelt.
  • Ändern Sie den Status des Assistenzknotens in einen normalen Knoten.
  • Speichern Sie die Präsentation.
For complete examples and data files, please go to https://github.com/aspose-slides/Aspose.Slides-for-C
// The path to the documents directory.
const String templatePath = u"../templates/AssistantNode.pptx";
const String outPath = u"../out/ChangeAssitantNode_out.pptx";
// Load the desired the presentation
SharedPtr<Presentation> pres = MakeObject<Presentation>(templatePath);
// Traverse through every shape inside first slide
for (int x = 0; x < pres->get_Slides()->idx_get(0)->get_Shapes()->get_Count(); x++)
{
SharedPtr<IShape> shape = pres->get_Slides()->idx_get(0)->get_Shapes()->idx_get(x);
if (System::ObjectExt::Is<Aspose::Slides::SmartArt::SmartArt>(shape))
{
System::SharedPtr<Aspose::Slides::SmartArt::SmartArt> smart = System::DynamicCast_noexcept<Aspose::Slides::SmartArt::SmartArt>(shape);
for (int i = 0; i < smart->get_AllNodes()->get_Count(); i++)
{
// Accessing SmartArt node at index i
System::SharedPtr<Aspose::Slides::SmartArt::ISmartArtNode> node = smart->get_AllNodes()->idx_get(i);
if (node->get_IsAssistant())
{
// Setting Assitant node to false and making it normal node
node->set_IsAssistant(false);
}
}
}
}
// Save Presentation
pres->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptx);

Füllformat des Knotens festlegen

Aspose.Slides für C++ ermöglicht es, benutzerdefinierte SmartArt-Formen hinzuzufügen und deren Füllformate festzulegen. Dieser Artikel erklärt, wie man SmartArt-Formen erstellt und darauf zugreift und deren Füllformat mit Aspose.Slides für C++ festlegt.

Bitte folgen Sie den folgenden Schritten:

  • Erstellen Sie eine Instanz der Presentation Klasse.
  • Erhalten Sie die Referenz einer Folie mit ihrem Index.
  • Fügen Sie eine SmartArt-Form hinzu, indem Sie ihren LayoutTyp festlegen.
  • Setzen Sie das Füllformat für die Knoten der SmartArt-Form.
  • Schreiben Sie die bearbeitete Präsentation als PPTX-Datei.
For complete examples and data files, please go to https://github.com/aspose-slides/Aspose.Slides-for-C
// The path to the documents directory.
const String outPath = u"../out/FillFormat_SmartArt_ShapeNode_out.pptx";
// Load the desired the presentation
SharedPtr<Presentation> pres = MakeObject<Presentation>();
// Add SmartArt BasicProcess
System::SharedPtr<Aspose::Slides::SmartArt::ISmartArt> smart = pres->get_Slides()->idx_get(0)->get_Shapes()->AddSmartArt(10, 10, 400, 300, SmartArtLayoutType::ClosedChevronProcess);
// Adding SmartArt node
System::SharedPtr<Aspose::Slides::SmartArt::ISmartArtNode> NewNode = smart->get_AllNodes()->AddNode();
//Adding text to added node
NewNode->get_TextFrame()->set_Text( u"Some text");
// Save Presentation
pres->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptx);

Miniaturansicht des SmartArt-Kindknotens generieren

Entwickler können eine Miniaturansicht des Kindknotens einer SmartArt erstellen, indem sie die folgenden Schritte befolgen:

  1. Instanziieren Sie die Presentation Klasse, die die PPTX-Datei darstellt.
  2. Fügen Sie SmartArt hinzu.
  3. Erhalten Sie die Referenz eines Knotens, indem Sie seinen Index verwenden.
  4. Holen Sie sich das Miniaturbild.
  5. Speichern Sie das Miniaturbild in jedem gewünschten Bildformat.

Im folgenden Beispiel wird eine Miniaturansicht des SmartArt-Kindknotens generiert

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();