SmartArt in PowerPoint-Präsentationen mit C++ verwalten

Übersicht

SmartArt ist ein PowerPoint‑Diagramm, das aus Knoten, Knotenkformen und einem Layout besteht. Mit Aspose.Slides für C++ können Sie SmartArt erstellen, Text aus seinen Knoten auslesen, das Layout ändern, versteckte Knoten untersuchen, Organisationsdiagramm‑Layouts konfigurieren und Bild‑Organisationsdiagramme erstellen.

Text aus einem SmartArt‑Objekt abrufen

Ein SmartArt‑Knoten kann ein oder mehrere Formen enthalten. Um den sichtbaren Text zu lesen, iterieren Sie über ISmartArt::get_AllNodes, und lesen Sie dann das ITextFrame , das von ISmartArtShape::get_TextFrame zurückgegeben wird.

auto presentation = System::MakeObject<Presentation>(u"sample.pptx");
auto slide = presentation->get_Slide(0);
auto shape = slide->get_Shape(0);

if (System::ObjectExt::Is<ISmartArt>(shape))
{
    auto smartArt = System::ExplicitCast<ISmartArt>(shape);

    for (int nodeIndex = 0; nodeIndex < smartArt->get_AllNodes()->get_Count(); nodeIndex++)
    {
        auto node = smartArt->get_AllNodes()->idx_get(nodeIndex);

        for (int shapeIndex = 0; shapeIndex < node->get_Shapes()->get_Count(); shapeIndex++)
        {
            auto nodeShape = node->get_Shape(shapeIndex);

            if (nodeShape->get_TextFrame() != nullptr)
            {
                System::Console::WriteLine(nodeShape->get_TextFrame()->get_Text());
            }
        }
    }
}

presentation->Dispose();

Layouttyp eines SmartArt‑Objekts ändern

Das SmartArt‑Layout bestimmt, wie Knoten angeordnet und verbunden sind. Das folgende Beispiel erstellt ein SmartArt‑Objekt mit dem SmartArtLayoutType‑Wert BasicBlockList, ändert ihn in den Wert BasicProcess und speichert die Präsentation.

auto presentation = System::MakeObject<Presentation>();

auto smartArt = presentation->get_Slide(0)->get_Shapes()->AddSmartArt(
    10.0f, 10.0f, 400.0f, 300.0f, SmartArtLayoutType::BasicBlockList);

smartArt->set_Layout(SmartArtLayoutType::BasicProcess);

presentation->Save(u"ChangeSmartArtLayout_out.pptx", SaveFormat::Pptx);
presentation->Dispose();

Überprüfen, ob ein SmartArt‑Knoten ausgeblendet ist

ISmartArtNode::get_IsHidden gibt an, ob der Knoten im SmartArt‑Datenmodell ausgeblendet ist. Ausgeblendete Knoten können in der Struktur vorhanden sein, selbst wenn das ausgewählte Layout sie nicht als sichtbare Diagrammelemente anzeigt.

Das folgende Beispiel fügt einem SmartArt‑Objekt, das den SmartArtLayoutType‑Wert RadialCycle verwendet, einen Knoten hinzu und prüft den ausgeblendeten Zustand des Knotens.

auto presentation = System::MakeObject<Presentation>();

auto smartArt = presentation->get_Slide(0)->get_Shapes()->AddSmartArt(
    10.0f, 10.0f, 400.0f, 300.0f, SmartArtLayoutType::RadialCycle);

auto node = smartArt->get_AllNodes()->AddNode();
bool isHidden = node->get_IsHidden();

if (isHidden)
{
    System::Console::WriteLine(u"The node is hidden in the SmartArt data model.");
}

presentation->Save(u"CheckSmartArtHiddenProperty_out.pptx", SaveFormat::Pptx);
presentation->Dispose();

Organisationsdiagramm‑Layout abrufen oder festlegen

Für SmartArt‑Diagramme, die ein Organisationsdiagramm‑Layout verwenden, definieren ISmartArtNode::get_OrganizationChartLayout und ISmartArtNode::set_OrganizationChartLayout, wie Kindknoten unter einem Elternknoten angeordnet werden. Beispielsweise können Sie Kindknoten links, rechts oder an beiden Seiten hängen lassen, je nach ausgewähltem OrganizationChartLayoutType.

Das folgende Beispiel erstellt ein Organisationsdiagramm und setzt das Layout für den ersten Knoten auf den OrganizationChartLayoutType‑Wert LeftHanging.

auto presentation = System::MakeObject<Presentation>();

auto smartArt = presentation->get_Slide(0)->get_Shapes()->AddSmartArt(
    10.0f, 10.0f, 400.0f, 300.0f, SmartArtLayoutType::OrganizationChart);

auto rootNode = smartArt->get_Node(0);
rootNode->set_OrganizationChartLayout(OrganizationChartLayoutType::LeftHanging);

presentation->Save(u"OrganizationChartLayout_out.pptx", SaveFormat::Pptx);
presentation->Dispose();

Ein Bild‑Organisationsdiagramm erstellen

Ein Bild‑Organisationsdiagramm ist ein SmartArt‑Layout, das für Hierarchiediagramme mit Bild‑Platzhaltern entwickelt wurde. Verwenden Sie den SmartArtLayoutType‑Wert PictureOrganizationChart, wenn Sie das SmartArt‑Objekt zu einer Folie hinzufügen.

auto presentation = System::MakeObject<Presentation>();

auto smartArt = presentation->get_Slide(0)->get_Shapes()->AddSmartArt(
    0.0f, 0.0f, 400.0f, 400.0f, SmartArtLayoutType::PictureOrganizationChart);

presentation->Save(u"PictureOrganizationChart_out.pptx", SaveFormat::Pptx);
presentation->Dispose();

FAQ

Unterstützt SmartArt Mirroring oder Umkehrung für RTL‑Sprachen?

Ja. Die Methode SmartArt::set_IsReversed wechselt die Diagrammrichtung von links‑nach‑rechts zu rechts‑nach‑links oder zurück, sofern das ausgewählte SmartArt‑Layout die Umkehr unterstützt.

Wie kann ich SmartArt auf derselben Folie oder in eine andere Präsentation kopieren und dabei die Formatierung beibehalten?

Sie können die SmartArt‑Form mit SmartArt-Form klonen ShapeCollection::AddClone oder die gesamte Folie, die die SmartArt enthält, mit gesamte Folie klonen Clone klonen. Beide Verfahren behalten Größe, Position und Formatierung bei.

Wie render ich SmartArt zu einem Raster‑Bild für die Vorschau oder den Web‑Export?

Folie rendern oder die gesamte Präsentation zu PNG oder JPEG. SmartArt wird als Teil der Folie gerendert.

Wie kann ich ein bestimmtes SmartArt‑Objekt auf einer Folie finden, wenn mehrere vorhanden sind?

Legen Sie einen eindeutigen Shape::set_AlternativeText‑ oder Shape::set_Name‑Wert für die SmartArt‑Form fest, suchen Sie diesen Wert in BaseSlide::get_Shapes, und überprüfen Sie anschließend, ob das gefundene Formobjekt ein ISmartArt ist.