SmartArt-Formknoten in Präsentationen auf Android verwalten
SmartArt‑Knoten hinzufügen
Aspose.Slides für Android über Java hat die einfachste API bereitgestellt, um SmartArt‑Formen auf einfachste Weise zu verwalten. Der folgende Beispielcode hilft, einen Knoten und einen Kindknoten innerhalb einer SmartArt‑Form hinzuzufügen.
- Erstellen Sie eine Instanz der Klasse Presentation und laden Sie die Präsentation mit einer SmartArt‑Form.
- Holen Sie die Referenz der ersten Folie über ihren Index.
- Durchlaufen Sie jede Form auf der ersten Folie.
- Prüfen Sie, ob die Form vom Typ SmartArt ist, und casten Sie die ausgewählte Form zu SmartArt, falls es sich um SmartArt handelt.
- Fügen Sie einen neuen Knoten hinzu in die SmartArt‑Form NodeCollection und setzen Sie den Text im TextFrame.
- Jetzt, [Hinzufügen] einen Kindknoten zum neu hinzugefügten SmartArt‑Knoten und setzen Sie den Text im TextFrame.
- Speichern Sie die Präsentation.
// Laden Sie die gewünschte Präsentation
Presentation pres = new Presentation("SimpleSmartArt.pptx");
try {
// Durchlaufen Sie jede Form in der ersten Folie
for (IShape shape : pres.getSlides().get_Item(0).getShapes())
{
// Prüfen, ob die Form vom Typ SmartArt ist
if (shape instanceof SmartArt)
{
// Typumwandlung der Form zu SmartArt
SmartArt smart = (SmartArt) shape;
// Hinzufügen eines neuen SmartArt-Knotens
SmartArtNode TemNode = (SmartArtNode) smart.getAllNodes().addNode();
// Text hinzufügen
TemNode.getTextFrame().setText("Test");
// Hinzufügen eines neuen Kindknotens im übergeordneten Knoten. Er wird am Ende der Sammlung hinzugefügt
SmartArtNode newNode = (SmartArtNode) TemNode.getChildNodes().addNode();
// Text hinzufügen
newNode.getTextFrame().setText("New Node Added");
}
}
// Präsentation speichern
pres.save("AddSmartArtNode.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
SmartArt‑Knoten an einer bestimmten Position hinzufügen
Im folgenden Beispielcode haben wir erklärt, wie man die Kindknoten, die zu den jeweiligen Knoten einer SmartArt‑Form gehören, an einer bestimmten Position hinzufügt.
- Erstellen Sie eine Instanz der Klasse Presentation.
- Holen Sie die Referenz der ersten Folie über ihren Index.
- Fügen Sie in der angegriffenen Folie eine SmartArt‑Form vom Typ StackedList hinzu.
- Greifen Sie auf den ersten Knoten der hinzugefügten SmartArt‑Form zu.
- Fügen Sie nun den Kindknoten für den ausgewählten Node an Position 2 hinzu und setzen Sie dessen Text.
- Speichern Sie die Präsentation.
// Präsentationsinstanz erstellen
Presentation pres = new Presentation();
try {
// Auf die Folie der Präsentation zugreifen
ISlide slide = pres.getSlides().get_Item(0);
// SmartArt IShape hinzufügen
ISmartArt smart = slide.getShapes().addSmartArt(0, 0, 400, 400, SmartArtLayoutType.StackedList);
// Zugriff auf den SmartArt-Knoten bei Index 0
ISmartArtNode node = smart.getAllNodes().get_Item(0);
// Neuen Kindknoten an Position 2 im übergeordneten Knoten hinzufügen
SmartArtNode chNode = (SmartArtNode) ((SmartArtNodeCollection) node.getChildNodes()).addNodeByPosition(2);
// Text hinzufügen
chNode.getTextFrame().setText("Sample Text Added");
// Präsentation speichern
pres.save("AddSmartArtNodeByPosition.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Auf einen SmartArt‑Knoten zugreifen
Der folgende Beispielcode hilft, Knoten innerhalb einer SmartArt‑Form zuzugreifen. Bitte beachten Sie, dass Sie den LayoutType der SmartArt nicht ändern können, da er schreibgeschützt ist und nur beim Hinzufügen der SmartArt‑Form gesetzt wird.
- Erstellen Sie eine Instanz der Klasse Presentation und laden Sie die Präsentation mit einer SmartArt‑Form.
- Holen Sie die Referenz der ersten Folie über ihren Index.
- Durchlaufen Sie jede Form auf der ersten Folie.
- Prüfen Sie, ob die Form vom Typ SmartArt ist, und casten Sie die ausgewählte Form zu SmartArt, falls es sich um SmartArt handelt.
- Durchlaufen Sie alle Nodes innerhalb der SmartArt‑Form.
- Greifen Sie zu und zeigen Sie Informationen wie SmartArt‑Knoten‑Position, Ebene und Text an.
// Presentation-Klasse instanziieren
Presentation pres = new Presentation("SmartArtShape.pptx");
try {
// Erste Folie holen
ISlide slide = pres.getSlides().get_Item(0);
// Durchlaufen aller Formen in der ersten Folie
for (IShape shape : slide.getShapes())
{
// Prüfen, ob die Form vom Typ SmartArt ist
if (shape instanceof ISmartArt)
{
// Form zu SmartArt casten
ISmartArt smart = (ISmartArt) shape;
// Durchlaufen aller Knoten innerhalb von SmartArt
for (int i = 0; i < smart.getAllNodes().size(); i++)
{
// Zugriff auf SmartArt-Knoten bei Index i
SmartArtNode node = (SmartArtNode) smart.getAllNodes().get_Item(i);
// Ausgabe der SmartArt-Knotenparameter
System.out.print(node.getTextFrame().getText() + " " + node.getLevel() + " " + node.getPosition());
}
}
}
} finally {
if (pres != null) pres.dispose();
}
Auf einen SmartArt‑Kindknoten zugreifen
Der folgende Beispielcode hilft, die Kindknoten zu den jeweiligen Knoten einer SmartArt‑Form zuzugreifen.
- Erstellen Sie eine Instanz der Klasse Presentation und laden Sie die Präsentation mit einer SmartArt‑Form.
- Holen Sie die Referenz der ersten Folie über ihren Index.
- Durchlaufen Sie jede Form auf der ersten Folie.
- Prüfen Sie, ob die Form vom Typ SmartArt ist, und casten Sie die ausgewählte Form zu SmartArt, falls es sich um SmartArt handelt.
- Durchlaufen Sie alle Nodes innerhalb der SmartArt‑Form.
- Für jeden ausgewählten SmartArt‑Node traversieren Sie alle Child Nodes innerhalb dieses Knotens.
- Greifen Sie zu und zeigen Sie Informationen wie Child Node Position, Ebene und Text an.
// Präsentationsklasse instanziieren
Presentation pres = new Presentation("AccessChildNodes.pptx");
try {
// Erste Folie holen
ISlide slide = pres.getSlides().get_Item(0);
// Durchlaufen aller Formen in der ersten Folie
for (IShape shape : slide.getShapes())
{
// Prüfen, ob die Form vom Typ SmartArt ist
if (shape instanceof ISmartArt)
{
// Form zu SmartArt casten
ISmartArt smart = (ISmartArt) shape;
// Durchlaufen aller Knoten innerhalb von SmartArt
for (int i = 0; i < smart.getAllNodes().size(); i++)
{
// Zugriff auf SmartArt-Knoten bei Index i
SmartArtNode node0 = (SmartArtNode) smart.getAllNodes().get_Item(i);
// Durchlaufen der Kindknoten im SmartArt-Knoten bei Index i
for (int j = 0; j < node0.getChildNodes().size(); j++)
{
// Zugriff auf den Kindknoten im SmartArt-Knoten
SmartArtNode node = (SmartArtNode) node0.getChildNodes().get_Item(j);
// Ausgabe der SmartArt-Kindknotenparameter
System.out.print("j = " + j + ", Text = " + node.getTextFrame().getText() + ", Level = " + node.getLevel() + ", Position = " + node.getPosition());
}
}
}
}
} finally {
if (pres != null) pres.dispose();
}
Auf einen SmartArt‑Kindknoten an einer bestimmten Position zugreifen
In diesem Beispiel lernen wir, wie man Kindknoten an einer bestimmten Position zu den jeweiligen Knoten einer SmartArt‑Form zugreift.
- Erstellen Sie eine Instanz der Klasse Presentation.
- Holen Sie die Referenz der ersten Folie über ihren Index.
- Fügen Sie eine SmartArt‑Form vom Typ StackedList hinzu.
- Greifen Sie auf die hinzugefügte SmartArt‑Form zu.
- Greifen Sie auf den Knoten mit Index 0 der angegriffenen SmartArt‑Form zu.
- Jetzt greifen Sie mit der Methode get_Item() auf den Child Node an Position 1 des angegriffenen SmartArt‑Knotens zu.
- Greifen Sie zu und zeigen Sie Informationen wie Child Node Position, Ebene und Text an.
// Präsentation instanziieren
Presentation pres = new Presentation();
try {
// Zugriff auf die erste Folie
ISlide slide = pres.getSlides().get_Item(0);
// SmartArt-Form zur ersten Folie hinzufügen
ISmartArt smart = slide.getShapes().addSmartArt(0, 0, 400, 400, SmartArtLayoutType.StackedList);
// Zugriff auf den SmartArt-Knoten bei Index 0
ISmartArtNode node = smart.getAllNodes().get_Item(0);
// Zugriff auf den Kindknoten an Position 1 im übergeordneten Knoten
int position = 1;
SmartArtNode chNode = (SmartArtNode) ((SmartArtNodeCollection) node.getChildNodes()).get_Item(position);
// Ausgabe der SmartArt-Kindknotenparameter
System.out.print("Text = " + chNode.getTextFrame().getText() + ", Level = " + chNode.getLevel() + ", Position = " + chNode.getPosition());
} finally {
if (pres != null) pres.dispose();
}
Einen SmartArt‑Knoten entfernen
In diesem Beispiel lernen wir, wie man Knoten innerhalb einer SmartArt‑Form entfernt.
- Erstellen Sie eine Instanz der Klasse Presentation und laden Sie die Präsentation mit einer SmartArt‑Form.
- Holen Sie die Referenz der ersten Folie über ihren Index.
- Durchlaufen Sie jede Form auf der ersten Folie.
- Prüfen Sie, ob die Form vom Typ SmartArt ist, und casten Sie die ausgewählte Form zu SmartArt, falls es sich um SmartArt handelt.
- Prüfen Sie, ob die SmartArt mehr als 0 Knoten enthält.
- Wählen Sie den zu löschenden SmartArt‑Knoten aus.
- Entfernen Sie nun den ausgewählten Knoten mit der Methode RemoveNode .
- Speichern Sie die Präsentation.
// Laden Sie die gewünschte Präsentation
Presentation pres = new Presentation("AddSmartArtNode.pptx");
try {
// Durchlaufen Sie jede Form in der ersten Folie
for (IShape shape : pres.getSlides().get_Item(0).getShapes())
{
// Prüfen, ob die Form vom Typ SmartArt ist
if (shape instanceof ISmartArt)
{
// Form zu SmartArt casten
ISmartArt smart = (ISmartArt) shape;
if (smart.getAllNodes().size() > 0)
{
// Zugriff auf SmartArt-Knoten bei Index 0
ISmartArtNode node = smart.getAllNodes().get_Item(0);
// Entfernen des ausgewählten Knotens
smart.getAllNodes().removeNode(node);
}
}
}
// Präsentation speichern
pres.save("RemoveSmartArtNode.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Einen SmartArt‑Knoten an einer bestimmten Position entfernen
In diesem Beispiel lernen wir, wie man Knoten innerhalb einer SmartArt‑Form an einer bestimmten Position entfernt.
- Erstellen Sie eine Instanz der Klasse Presentation und laden Sie die Präsentation mit einer SmartArt‑Form.
- Holen Sie die Referenz der ersten Folie über ihren Index.
- Durchlaufen Sie jede Form auf der ersten Folie.
- Prüfen Sie, ob die Form vom Typ SmartArt ist, und casten Sie die ausgewählte Form zu SmartArt, falls es sich um SmartArt handelt.
- Wählen Sie den SmartArt‑Form‑Knoten mit Index 0 aus.
- Prüfen Sie nun, ob der ausgewählte SmartArt‑Knoten mehr als 2 Kindknoten enthält.
- Entfernen Sie nun den Knoten an Position 1 mit der Methode RemoveNode .
- Speichern Sie die Präsentation.
// Laden Sie die gewünschte Präsentation
Presentation pres = new Presentation("AddSmartArtNode.pptx");
try {
// Durchlaufen Sie jede Form in der ersten Folie
for (IShape shape : pres.getSlides().get_Item(0).getShapes())
{
// Prüfen, ob die Form vom Typ SmartArt ist
if (shape instanceof SmartArt)
{
// Form zu SmartArt casten
SmartArt smart = (SmartArt) shape;
if (smart.getAllNodes().size() > 0)
{
// Zugriff auf den SmartArt-Knoten bei Index 0
ISmartArtNode node = smart.getAllNodes().get_Item(0);
if (node.getChildNodes().size() >= 2)
{
// Entfernen des Kindknotens an Position 1
(node.getChildNodes()).removeNode(1);
}
}
}
}
// Präsentation speichern
pres.save("RemoveSmartArtNodeByPosition.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Eine benutzerdefinierte Position für einen Kindknoten in einem SmartArt‑Objekt festlegen
Jetzt unterstützt Aspose.Slides für Android über Java das Setzen der Eigenschaften X und Y des SmartArtShape. Das nachfolgende Code‑Snippet zeigt, wie benutzerdefinierte Position, Größe und Drehung einer SmartArtShape festgelegt werden können. Bitte beachten Sie, dass das Hinzufügen neuer Knoten eine Neuberechnung der Positionen und Größen aller Knoten auslöst. Mit benutzerdefinierten Positionseinstellungen kann der Nutzer die Knoten nach Bedarf anordnen.
// Presentation-Klasse instanziieren
Presentation pres = new Presentation("SimpleSmartArt.pptx");
try{
ISmartArt smart = pres.getSlides().get_Item(0).getShapes().addSmartArt(20, 20, 600, 500, SmartArtLayoutType.OrganizationChart);
// SmartArt-Form an neue Position verschieben
ISmartArtNode node = smart.getAllNodes().get_Item(1);
ISmartArtShape shape = node.getShapes().get_Item(1);
shape.setX(shape.getX() + shape.getWidth() * 2);
shape.setY(shape.getY() - shape.getHeight() * 2);
// Breiten der SmartArt-Form ändern
node = smart.getAllNodes().get_Item(2);
shape = node.getShapes().get_Item(1);
shape.setWidth(shape.getWidth() + shape.getWidth() * 2);
// Höhe der SmartArt-Form ändern
node = smart.getAllNodes().get_Item(3);
shape = node.getShapes().get_Item(1);
shape.setHeight(shape.getHeight() + shape.getHeight() * 2);
// Drehung der SmartArt-Form ändern
node = smart.getAllNodes().get_Item(4);
shape = node.getShapes().get_Item(1);
shape.setRotation(90);
pres.save("SmartArt.pptx", SaveFormat.Pptx);
}finally {
pres.dispose();
}
Assistant‑Knoten prüfen
Wir verwenden die nachstehende SmartArt‑Form als Ausgangsbasis für unsere Untersuchungen in den verschiedenen Abschnitten dieses Artikels.
![]() |
|---|
| Abbildung: Ausgangs‑SmartArt‑Form in der Folie |
Im folgenden Beispielcode untersuchen wir, wie Assistant‑Knoten in der SmartArt‑Knotensammlung identifiziert und geändert werden können.
- Erstellen Sie eine Instanz der Klasse Presentation und laden Sie die Präsentation mit einer SmartArt‑Form.
- Holen Sie die Referenz der zweiten Folie über ihren Index.
- Durchlaufen Sie jede Form auf der ersten Folie.
- Prüfen Sie, ob die Form vom Typ SmartArt ist, und casten Sie die ausgewählte Form zu SmartArt, falls es sich um SmartArt handelt.
- Durchlaufen Sie alle Knoten innerhalb der SmartArt‑Form und prüfen Sie, ob sie Assistant Nodes sind.
- Ändern Sie den Status des Assistant‑Knotens zu einem normalen Knoten.
- Speichern Sie die Präsentation.
// Präsentationsinstanz erstellen
Presentation pres = new Presentation("AddNodes.pptx");
try {
// Durchlaufen aller Formen auf der ersten Folie
for (IShape shape : pres.getSlides().get_Item(0).getShapes())
{
// Prüfen, ob die Form vom Typ SmartArt ist
if (shape instanceof ISmartArt)
{
// Form zu SmartArt casten
ISmartArt smart = (SmartArt) shape;
// Durchlaufen aller Knoten der SmartArt-Form
for (int i = 0; i < smart.getAllNodes().size(); i++)
{
ISmartArtNode node = smart.getAllNodes().get_Item(i);
// Prüfen, ob der Knoten ein Assistant-Knoten ist
if (node.isAssistant())
{
// Assistant-Flag auf false setzen und den Knoten zu einem normalen Knoten machen
node.isAssistant();
}
}
}
}
// Präsentation speichern
pres.save("ChangeAssitantNode.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
![]() |
|---|
| Abbildung: Assistant‑Knoten in der SmartArt‑Form geändert |
Füllformat für einen Knoten festlegen
Aspose.Slides für Android über Java ermöglicht das Hinzufügen benutzerdefinierter SmartArt‑Formen und das Festlegen ihres Füllformats. Dieser Artikel erklärt, wie SmartArt‑Formen erstellt, zugegriffen und ihr Füllformat gesetzt wird.
Bitte folgen Sie den untenstehenden Schritten:
- Erstellen Sie eine Instanz der Klasse Presentation.
- Holen Sie die Referenz einer Folie über ihren Index.
- Fügen Sie eine SmartArt‑Form hinzu, indem Sie deren LayoutType festlegen.
- Setzen Sie das FillFormat für die Knoten der SmartArt‑Form.
- Schreiben Sie die modifizierte Präsentation als PPTX‑Datei.
// Präsentation instanziieren
Presentation pres = new Presentation();
try {
// Auf die Folie zugreifen
ISlide slide = pres.getSlides().get_Item(0);
// SmartArt-Form und Knoten hinzufügen
ISmartArt chevron = slide.getShapes().addSmartArt(10, 10, 800, 60, SmartArtLayoutType.ClosedChevronProcess);
ISmartArtNode node = chevron.getAllNodes().addNode();
node.getTextFrame().setText("Some text");
// Knoten-Füllfarbe festlegen
for (IShape item : node.getShapes())
{
item.getFillFormat().setFillType(FillType.Solid);
item.getFillFormat().getSolidFillColor().setColor(Color.RED);
}
// Präsentation speichern
pres.save("TestSmart.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Ein Thumbnail eines SmartArt‑Kindknotens erzeugen
Entwickler können ein Thumbnail eines Kindknotens einer SmartArt erzeugen, indem sie die folgenden Schritte ausführen:
- Erstellen Sie eine Instanz der Klasse Presentation.
- SmartArt hinzufügen.
- Holen Sie die Referenz eines Knotens über dessen Index.
- Erzeugen Sie das Thumbnail‑Bild.
- Speichern Sie das Thumbnail‑Bild in einem gewünschten Bildformat.
// Instanziieren der Präsentationsklasse, die die PPTX-Datei darstellt
Presentation pres = new Presentation();
try {
// SmartArt hinzufügen
ISmartArt smart = pres.getSlides().get_Item(0).getShapes().addSmartArt(10, 10, 400, 300, SmartArtLayoutType.BasicCycle);
// Referenz eines Knotens anhand seines Index abrufen
ISmartArtNode node = smart.getNodes().get_Item(1);
// Thumbnail abrufen
IImage slideImage = node.getShapes().get_Item(0).getImage();
// Thumbnail speichern
try {
slideImage.save("SmartArt_ChildNote_Thumbnail.png", ImageFormat.Png);
} finally {
if (slideImage != null) slideImage.dispose();
}
} finally {
if (pres != null) pres.dispose();
}
FAQ
Wird SmartArt‑Animation unterstützt?
Ja. SmartArt wird als reguläre Form behandelt, sodass Sie Standardanimationen (Eintritt, Austritt, Betonung, Bewegungspfad) anwenden und das Timing anpassen können. Bei Bedarf können Sie auch Formen innerhalb von SmartArt‑Knoten animieren.
Wie finde ich ein bestimmtes SmartArt zuverlässig auf einer Folie, wenn seine interne ID unbekannt ist?
Verwenden Sie alternativen Text. Durch das Setzen eines eindeutigen AltText‑Werts für die SmartArt können Sie sie programmgesteuert finden, ohne interne Bezeichner zu benötigen.
Bleibt das Aussehen von SmartArt beim Konvertieren der Präsentation zu PDF erhalten?
Ja. Aspose.Slides rendert SmartArt mit hoher visueller Treue während des PDF‑Exports, wobei Layout, Farben und Effekte erhalten bleiben.
Kann ich ein Bild des gesamten SmartArt‑Objekts extrahieren (für Vorschauen oder Berichte)?
Ja. Sie können eine SmartArt‑Form in Rasterformate oder in SVG rendern, wodurch sich das Ergebnis für Thumbnails, Berichte oder Web‑Nutzung eignet.

