Zarządzanie SmartArt w prezentacjach PowerPoint przy użyciu C++
Przegląd
SmartArt to diagram PowerPoint zbudowany z węzłów, kształtów węzłów i układu. Dzięki Aspose.Slides for C++ możesz tworzyć SmartArt, odczytywać tekst z jego węzłów, zmieniać układ, przeglądać ukryte węzły, konfigurować układy diagramów organizacyjnych oraz tworzyć wykresy organizacyjne ze zdjęciami.
Pobieranie tekstu z obiektu SmartArt
Węzeł SmartArt może zawierać jeden lub więcej kształtów. Aby odczytać widoczny tekst, przeiteruj po ISmartArt::get_AllNodes, a następnie odczytaj ITextFrame zwrócony przez ISmartArtShape::get_TextFrame.
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();
Zmienianie typu układu obiektu SmartArt
Układ SmartArt kontroluje sposób rozmieszczenia i połączenia węzłów. Poniższy przykład tworzy obiekt SmartArt z wartością SmartArtLayoutType BasicBlockList, zmienia go na wartość BasicProcess i zapisuje prezentację.
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();
Sprawdzanie, czy węzeł SmartArt jest ukryty
ISmartArtNode::get_IsHidden wskazuje, czy węzeł jest ukryty w modelu danych SmartArt. Ukryte węzły mogą istnieć w strukturze, nawet gdy wybrany układ nie wyświetla ich jako widoczne elementy diagramu.
Poniższy przykład dodaje węzeł do obiektu SmartArt, który używa wartości SmartArtLayoutType RadialCycle, i sprawdza stan ukrycia węzła.
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();
Pobieranie lub ustawianie układu diagramu organizacyjnego
W diagramach SmartArt wykorzystujących układ diagramu organizacyjnego, ISmartArtNode::get_OrganizationChartLayout oraz ISmartArtNode::set_OrganizationChartLayout określają, jak węzły podrzędne są rozmieszczane pod węzłem nadrzędnym. Na przykład możesz ustawić węzły podrzędne tak, aby zwisały po lewej, po prawej lub po obu stronach, w zależności od wybranego OrganizationChartLayoutType.
Poniższy przykład tworzy diagram organizacyjny i ustawia układ pierwszego węzła na wartość OrganizationChartLayoutType 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();
Tworzenie diagramu organizacyjnego ze zdjęciem
Diagram organizacyjny ze zdjęciem to układ SmartArt przeznaczony dla diagramów hierarchicznych, które zawierają miejsca na obrazy. Użyj wartości SmartArtLayoutType PictureOrganizationChart przy dodawaniu obiektu SmartArt do slajdu.
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
Czy SmartArt obsługuje odbicie lub odwrócenie dla języków RTL?
Tak. Metoda SmartArt::set_IsReversed zmienia kierunek diagramu z left-to-right na right-to-left lub odwrotnie, gdy wybrany układ SmartArt obsługuje odwrócenie.
Jak mogę skopiować SmartArt na ten sam slajd lub do innej prezentacji, zachowując formatowanie?
Możesz sklonować kształt SmartArt za pomocą ShapeCollection::AddClone lub sklonować cały slajd zawierający SmartArt. Oba podejścia zachowują rozmiar, położenie i formatowanie.
Jak wyrenderować SmartArt do obrazu rastrowego w celu podglądu lub eksportu na stronę internetową?
Wyrenderuj slajd lub całą prezentację do formatu PNG lub JPEG. SmartArt jest renderowany jako część slajdu.
Jak znaleźć konkretny obiekt SmartArt na slajdzie, jeśli jest ich kilka?
Ustaw charakterystyczną wartość Shape::set_AlternativeText lub Shape::set_Name na kształcie SmartArt, wyszukaj tę wartość w BaseSlide::get_Shapes, a następnie sprawdź, czy pasujący kształt jest typu ISmartArt.