SmartArt kezelése PowerPoint bemutatókban C++-al

Áttekintés

A SmartArt egy PowerPoint diagram, amely csomópontokból, csomópont alakzatokból és egy elrendezésből áll. Az Aspose.Slides for C++ segítségével létrehozhat SmartArt-ot, olvashat szöveget a csomópontjaiból, megváltoztathatja az elrendezését, ellenőrizheti a rejtett csomópontokat, konfigurálhatja a szervezeti diagram elrendezéseket, és létrehozhat képi szervezeti diagramokat.

Szöveg lekérése egy SmartArt objektumból

Egy SmartArt csomópont egy vagy több alakzatot tartalmazhat. A látható szöveg beolvasásához iteráljon a ISmartArt::get_AllNodes, majd olvassa el a ITextFrame objektumot, amelyet a ISmartArtShape::get_TextFrame ad vissza.

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

SmartArt objektum elrendezéstípusának megváltoztatása

A SmartArt elrendezés határozza meg, hogyan helyezkednek el és kapcsolódnak a csomópontok. A következő példa egy SmartArt objektumot hoz létre a SmartArtLayoutType BasicBlockList értékkel, átállítja BasicProcess értékre, és elmenti a bemutatót.

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

Ellenőrizze, hogy egy SmartArt csomópont rejtett‑e

Az ISmartArtNode::get_IsHidden azt jelzi, hogy a csomópont rejtett‑e a SmartArt adatmodellben. Rejtett csomópontok létezhetnek a struktúrában akkor is, ha a kiválasztott elrendezés nem jeleníti meg őket látható diagram elemekként.

A következő példa egy csomópontot ad egy SmartArt objektumhoz, amely a SmartArtLayoutType RadialCycle értéket használja, és ellenőrzi a csomópont rejtett állapotát.

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

A szervezeti diagram elrendezésének lekérése vagy beállítása

Azoknál a SmartArt diagramoknál, amelyek szervezeti diagram elrendezést használnak, az ISmartArtNode::get_OrganizationChartLayout és az ISmartArtNode::set_OrganizationChartLayout meghatározzák, hogyan helyezkednek el a gyermek csomópontok a szülő csomópont alatt. Például a gyermek csomópontokat beállíthatja balra, jobbra vagy mindkét oldalra akadásra, a kiválasztott OrganizationChartLayoutType függvényében.

A következő példa egy szervezeti diagramot hoz létre, és az első csomópont elrendezését a OrganizationChartLayoutType LeftHanging értékre állítja.

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

Képi szervezeti diagram létrehozása

A képi szervezeti diagram egy SmartArt elrendezés, amely hierarchikus diagramokhoz készült, és képhelyeket tartalmaz. Használja a SmartArtLayoutType PictureOrganizationChart értéket a SmartArt objektum diára való felvételéhez.

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

GYIK

Támogatja a SmartArt a tükrözést vagy visszafordítást RTL nyelvekhez?

Igen. A SmartArt::set_IsReversed metódus a diagram irányát balról jobbra → jobbról balra, vagy visszaállítja, ha a kiválasztott SmartArt elrendezés támogatja a visszafordítást.

Hogyan másolhatom a SmartArt‑ot ugyanarra a diára vagy egy másik prezentációba, miközben megőrzöm a formázást?

A SmartArt alakzat klónozásával a ShapeCollection::AddClone vagy a SmartArt‑ot tartalmazó teljes dia klónozásával másolhatja. Mindkét megközelítés megőrzi a méretet, a pozíciót és a formázást.

Hogyan renderelhetem a SmartArt‑ot raszteres képre előnézet vagy webes export céljából?

A dia renderelése vagy a teljes prezentáció PNG vagy JPEG formátumba. A SmartArt a dia részeként kerül renderelésre.

Hogyan találhatok meg egy meghatározott SmartArt objektumot egy dián, ha több is van?

Adjon meg egy egyedi Shape::set_AlternativeText vagy Shape::set_Name értéket a SmartArt alakzaton, keresse meg ezt az értéket a BaseSlide::get_Shapes között, majd ellenőrizze, hogy a megtalált alakzat egy ISmartArt.