SmartArt-Shape-Knoten verwalten
SmartArt‑Knoten hinzufügen
Aspose.Slides for .NET hat die einfachste API bereitgestellt, um SmartArt‑Objekte auf einfachste Weise zu verwalten. Der folgende Beispielcode hilft, einen Knoten und einen untergeordneten Knoten innerhalb eines SmartArt‑Objekts hinzuzufügen.
- Erstellen Sie eine Instanz der Klasse Presentation und laden Sie die Präsentation mit einem SmartArt‑Objekt.
- Erhalten Sie die Referenz der ersten Folie über deren Index.
- Durchlaufen Sie jedes Shape auf der ersten Folie.
- Prüfen Sie, ob das Shape vom Typ SmartArt ist, und casten Sie das ausgewählte Shape bei SmartArt zu SmartArt.
- Fügen Sie einen neuen Knoten zur NodeCollection des SmartArt‑Objekts hinzu und setzen Sie den Text im TextFrame.
- Fügen Sie nun einen untergeordneten Knoten zum neu hinzugefügten SmartArt‑Knoten hinzu und setzen Sie den Text im TextFrame.
- Speichern Sie die Präsentation.
// Laden Sie die gewünschte Präsentation
Presentation pres = new Presentation("AddNodes.pptx");
// Durchlaufen Sie jedes Shape auf der ersten Folie
foreach (IShape shape in pres.Slides[0].Shapes)
{
// Prüfen Sie, ob das Shape vom Typ SmartArt ist
if (shape is Aspose.Slides.SmartArt.SmartArt)
{
// Shape zu SmartArt casten
Aspose.Slides.SmartArt.SmartArt smart = (Aspose.Slides.SmartArt.SmartArt)shape;
// Einen neuen SmartArt‑Knoten hinzufügen
Aspose.Slides.SmartArt.SmartArtNode TemNode = (Aspose.Slides.SmartArt.SmartArtNode)smart.AllNodes.AddNode();
// Text hinzufügen
TemNode.TextFrame.Text = "Test";
// Neuen untergeordneten Knoten im übergeordneten Knoten hinzufügen. Er wird am Ende der Sammlung hinzugefügt
Aspose.Slides.SmartArt.SmartArtNode newNode = (Aspose.Slides.SmartArt.SmartArtNode)TemNode.ChildNodes.AddNode();
// Text hinzufügen
newNode.TextFrame.Text = "New Node Added";
}
}
// Präsentation speichern
pres.Save("AddSmartArtNode_out.pptx", Aspose.Slides.Export.SaveFormat.Pptx);
SmartArt‑Knoten an bestimmter Position hinzufügen
Im folgenden Beispielcode wird erklärt, wie untergeordnete Knoten, die zu jeweiligen Knoten des SmartArt‑Objekts gehören, an einer bestimmten Position hinzugefügt werden.
- Erstellen Sie eine Instanz der Klasse
Presentation. - Erhalten Sie die Referenz der ersten Folie über deren Index.
- Fügen Sie ein SmartArt‑Objekt des Typs StackedList zur ausgewählten Folie hinzu.
- Greifen Sie auf den ersten Knoten des hinzugefügten SmartArt‑Objekts zu.
- Fügen Sie nun für den ausgewählten Knoten an Position 2 einen untergeordneten Knoten hinzu und setzen Sie dessen Text.
- Speichern Sie die Präsentation.
// Instanz einer Präsentation erstellen
Presentation pres = new Presentation();
// Zugriff auf die Präsentationsfolie
ISlide slide = pres.Slides[0];
// SmartArt IShape hinzufügen
ISmartArt smart = slide.Shapes.AddSmartArt(0, 0, 400, 400, SmartArtLayoutType.StackedList);
// Zugriff auf den SmartArt-Knoten bei Index 0
ISmartArtNode node = smart.AllNodes[0];
// Neuen untergeordneten Knoten an Position 2 im übergeordneten Knoten hinzufügen
SmartArtNode chNode = (SmartArtNode)((SmartArtNodeCollection)node.ChildNodes).AddNodeByPosition(2);
// Text hinzufügen
chNode.TextFrame.Text = "Sample Text Added";
// Präsentation speichern
pres.Save("AddSmartArtNodeByPosition_out.pptx", Aspose.Slides.Export.SaveFormat.Pptx);
SmartArt‑Knoten zugreifen
Der folgende Beispielcode hilft, Knoten innerhalb eines SmartArt‑Objekts zuzugreifen. Bitte beachten Sie, dass Sie den LayoutType des SmartArt nicht ändern können, da er schreibgeschützt ist und nur beim Hinzufügen des SmartArt‑Objekts festgelegt wird.
-
Erstellen Sie eine Instanz der Klasse
Presentationund laden Sie die Präsentation mit einem SmartArt‑Objekt. -
Erhalten Sie die Referenz der ersten Folie über deren Index.
-
Durchlaufen Sie jedes Shape auf der ersten Folie.
-
Prüfen Sie, ob das Shape vom Typ SmartArt ist, und casten Sie das ausgewählte Shape bei SmartArt zu SmartArt.
-
Durchlaufen Sie alle Knoten im SmartArt‑Objekt.
-
Greifen Sie auf Informationen wie SmartArt‑Knotenposition, Ebene und Text zu und zeigen Sie diese an.
// Laden Sie die gewünschte Präsentation Presentation pres = new Presentation("AccessSmartArt.pptx"); // Durchlaufen Sie jedes Shape auf der ersten Folie foreach (IShape shape in pres.Slides[0].Shapes) { // Prüfen Sie, ob das Shape vom Typ SmartArt ist if (shape is Aspose.Slides.SmartArt.SmartArt) { // Shape zu SmartArt casten Aspose.Slides.SmartArt.SmartArt smart = (Aspose.Slides.SmartArt.SmartArt)shape; // Durchlaufen Sie alle Knoten innerhalb von SmartArt for (int i = 0; i < smart.AllNodes.Count; i++) { // Zugriff auf SmartArt-Knoten mit Index i Aspose.Slides.SmartArt.SmartArtNode node = (Aspose.Slides.SmartArt.SmartArtNode)smart.AllNodes[i]; // Ausgabe der SmartArt-Knotenparameter string outString = string.Format("i = {0}, Text = {1}, Level = {2}, Position = {3}", i, node.TextFrame.Text, node.Level, node.Position); Console.WriteLine(outString); } } }
SmartArt‑untergeordneten Knoten zugreifen
Der folgende Beispielcode hilft, die zu jeweiligen Knoten eines SmartArt‑Objekts gehörenden untergeordneten Knoten zuzugreifen.
- Erstellen Sie eine Instanz der Klasse PresentationEx und laden Sie die Präsentation mit einem SmartArt‑Objekt.
- Erhalten Sie die Referenz der ersten Folie über deren Index.
- Durchlaufen Sie jedes Shape auf der ersten Folie.
- Prüfen Sie, ob das Shape vom Typ SmartArt ist, und casten Sie das ausgewählte Shape bei SmartArt zu SmartArtEx.
- Durchlaufen Sie alle Knoten im SmartArt‑Objekt.
- Für jeden ausgewählten SmartArt‑Knoten durchlaufen Sie alle untergeordneten Knoten des jeweiligen Knotens.
- Greifen Sie auf Informationen wie Position, Ebene und Text des untergeordneten Knotens zu und zeigen Sie diese an.
// Gewünschte Präsentation laden
Presentation pres = new Presentation("AccessChildNodes.pptx");
// Durchlaufen Sie jedes Shape auf der ersten Folie
foreach (IShape shape in pres.Slides[0].Shapes)
{
// Prüfen, ob das Shape vom Typ SmartArt ist
if (shape is Aspose.Slides.SmartArt.SmartArt)
{
// Shape zu SmartArt casten
Aspose.Slides.SmartArt.SmartArt smart = (Aspose.Slides.SmartArt.SmartArt)shape;
// Durchlaufen aller Knoten im SmartArt
for (int i = 0; i < smart.AllNodes.Count; i++)
{
// Zugriff auf SmartArt-Knoten mit Index i
Aspose.Slides.SmartArt.SmartArtNode node0 = (Aspose.Slides.SmartArt.SmartArtNode)smart.AllNodes[i];
// Durchlaufen der untergeordneten Knoten im SmartArt-Knoten mit Index i
for (int j = 0; j < node0.ChildNodes.Count; j++)
{
// Zugriff auf den untergeordneten Knoten im SmartArt-Knoten
Aspose.Slides.SmartArt.SmartArtNode node = (Aspose.Slides.SmartArt.SmartArtNode)node0.ChildNodes[j];
// Ausgabe der SmartArt-Unterknoten-Parameter
string outString = string.Format("j = {0}, Text = {1}, Level = {2}, Position = {3}", j, node.TextFrame.Text, node.Level, node.Position);
Console.WriteLine(outString);
}
}
}
}
SmartArt‑untergeordneten Knoten an bestimmter Position zugreifen
In diesem Beispiel lernen wir, auf die untergeordneten Knoten an einer bestimmten Position zuzugreifen, die zu jeweiligen Knoten eines SmartArt‑Objekts gehören.
- Erstellen Sie eine Instanz der Klasse
Presentation. - Erhalten Sie die Referenz der ersten Folie über deren Index.
- Fügen Sie ein SmartArt‑Objekt des Typs StackedList hinzu.
- Greifen Sie auf das hinzugefügte SmartArt‑Objekt zu.
- Greifen Sie auf den Knoten mit Index 0 des ausgewählten SmartArt‑Objekts zu.
- Greifen Sie nun mit der Methode GetNodeByPosition() auf den untergeordneten Knoten an Position 1 des ausgewählten SmartArt‑Knotens zu.
- Greifen Sie auf Informationen wie Position, Ebene und Text des untergeordneten Knotens zu und zeigen Sie diese an.
// Präsentation instanziieren
Presentation pres = new Presentation();
// Erste Folie zugreifen
ISlide slide = pres.Slides[0];
// SmartArt-Shape in erster Folie hinzufügen
ISmartArt smart = slide.Shapes.AddSmartArt(0, 0, 400, 400, SmartArtLayoutType.StackedList);
// SmartArt-Knoten mit Index 0 zugreifen
ISmartArtNode node = smart.AllNodes[0];
// Untergeordneten Knoten an Position 1 im übergeordneten Knoten zugreifen
int position = 1;
SmartArtNode chNode = (SmartArtNode)node.ChildNodes[position];
// Ausgabe der SmartArt-Unterknoten-Parameter
string outString = string.Format("j = {0}, Text = {1}, Level = {2}, Position = {3}", position, chNode.TextFrame.Text, chNode.Level, chNode.Position);
Console.WriteLine(outString);
SmartArt‑Knoten entfernen
In diesem Beispiel lernen wir, Knoten innerhalb eines SmartArt‑Objekts zu entfernen.
- Erstellen Sie eine Instanz der Klasse
Presentationund laden Sie die Präsentation mit einem SmartArt‑Objekt. - Erhalten Sie die Referenz der ersten Folie über deren Index.
- Durchlaufen Sie jedes Shape auf der ersten Folie.
- Prüfen Sie, ob das Shape vom Typ SmartArt ist, und casten Sie das ausgewählte Shape bei SmartArt zu SmartArt.
- Prüfen Sie, ob das 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() und speichern Sie die Präsentation.
// Lade die gewünschte Präsentation
using (Presentation pres = new Presentation("RemoveNode.pptx"))
{
// Durchlaufe jedes Shape auf der ersten Folie
foreach (IShape shape in pres.Slides[0].Shapes)
{
// Prüfe, ob das Shape vom Typ SmartArt ist
if (shape is ISmartArt)
{
// Shape zu SmartArtEx casten
ISmartArt smart = (ISmartArt)shape;
if (smart.AllNodes.Count > 0)
{
// Greife auf den SmartArt-Knoten mit Index 0 zu
ISmartArtNode node = smart.AllNodes[0];
// Entferne den ausgewählten Knoten
smart.AllNodes.RemoveNode(node);
}
}
}
// Speichere die Präsentation
pres.Save("RemoveSmartArtNode_out.pptx", Aspose.Slides.Export.SaveFormat.Pptx);
}
SmartArt‑Knoten an bestimmter Position entfernen
In diesem Beispiel lernen wir, Knoten innerhalb eines SmartArt‑Objekts an einer bestimmten Position zu entfernen.
- Erstellen Sie eine Instanz der Klasse
Presentationund laden Sie die Präsentation mit einem SmartArt‑Objekt. - Erhalten Sie die Referenz der ersten Folie über deren Index.
- Durchlaufen Sie jedes Shape auf der ersten Folie.
- Prüfen Sie, ob das Shape vom Typ SmartArt ist, und casten Sie das ausgewählte Shape bei SmartArt zu SmartArt.
- Wählen Sie den SmartArt‑Knoten mit Index 0 aus.
- Prüfen Sie nun, ob der ausgewählte SmartArt‑Knoten mehr als 2 untergeordnete Knoten hat.
- Entfernen Sie nun den Knoten an Position 1 mit der Methode RemoveNodeByPosition().
- Speichern Sie die Präsentation.
// Gewünschte Präsentation laden
Presentation pres = new Presentation("RemoveNodeSpecificPosition.pptx");
// Durchlaufen Sie jedes Shape auf der ersten Folie
foreach (IShape shape in pres.Slides[0].Shapes)
{
// Prüfen, ob das Shape vom Typ SmartArt ist
if (shape is Aspose.Slides.SmartArt.SmartArt)
{
// Shape zu SmartArt casten
Aspose.Slides.SmartArt.SmartArt smart = (Aspose.Slides.SmartArt.SmartArt)shape;
if (smart.AllNodes.Count > 0)
{
// Zugriff auf den SmartArt-Knoten mit Index 0
Aspose.Slides.SmartArt.ISmartArtNode node = smart.AllNodes[0];
if (node.ChildNodes.Count >= 2)
{
// Entfernen des untergeordneten Knotens an Position 1
((Aspose.Slides.SmartArt.SmartArtNodeCollection)node.ChildNodes).RemoveNode(1);
}
}
}
}
// Präsentation speichern
pres.Save("RemoveSmartArtNodeByPosition_out.pptx", Aspose.Slides.Export.SaveFormat.Pptx);
Benutzerdefinierte Position für untergeordneten Knoten in SmartArt festlegen
Aspose.Slides for .NET unterstützt jetzt das Festlegen der X- und Y-Eigenschaften von SmartArtShape. Der nachstehende Codeausschnitt zeigt, wie Sie eine benutzerdefinierte Position, Größe und Drehung von SmartArtShape festlegen. Beachten Sie bitte, dass das Hinzufügen neuer Knoten eine Neuberechnung der Positionen und Größen aller Knoten verursacht.
// Lade die gewünschte Präsentation
Presentation pres = new Presentation("AccessChildNodes.pptx");
{
ISmartArt smart = pres.Slides[0].Shapes.AddSmartArt(20, 20, 600, 500, SmartArtLayoutType.OrganizationChart);
// Verschiebe das SmartArt-Shape an neue Position
ISmartArtNode node = smart.AllNodes[1];
ISmartArtShape shape = node.Shapes[1];
shape.X += (shape.Width * 2);
shape.Y -= (shape.Height / 2);
// Ändere die Breiten des SmartArt-Shape
node = smart.AllNodes[2];
shape = node.Shapes[1];
shape.Width += (shape.Width / 2);
// Ändere die Höhe des SmartArt-Shape
node = smart.AllNodes[3];
shape = node.Shapes[1];
shape.Height += (shape.Height / 2);
// Ändere die Drehung des SmartArt-Shape
node = smart.AllNodes[4];
shape = node.Shapes[1];
shape.Rotation = 90;
pres.Save("SmartArt.pptx", SaveFormat.Pptx);
}
Assistant‑Knoten prüfen
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 PresentationEx und laden Sie die Präsentation mit einem SmartArt‑Objekt.
- Erhalten Sie die Referenz der zweiten Folie über deren Index.
- Durchlaufen Sie jedes Shape innerhalb der ersten Folie.
- Prüfen Sie, ob das Shape vom Typ SmartArt ist, und casten Sie das ausgewählte Shape bei SmartArt zu SmartArtEx.
- Durchlaufen Sie alle Knoten im SmartArt‑Objekt und prüfen Sie, ob es Assistant‑Knoten sind.
- Ändern Sie den Status des Assistant‑Knotens zu einem normalen Knoten.
- Speichern Sie die Präsentation.
// Präsentationsinstanz erstellen
using (Presentation pres = new Presentation("AssistantNode.pptx"))
{
// Durchlaufen aller Shapes auf der ersten Folie
foreach (IShape shape in pres.Slides[0].Shapes)
{
// Prüfen, ob das Shape vom Typ SmartArt ist
if (shape is Aspose.Slides.SmartArt.ISmartArt)
{
// Shape zu SmartArtEx casten
Aspose.Slides.SmartArt.ISmartArt smart = (Aspose.Slides.SmartArt.SmartArt)shape;
// Durchlaufen aller Knoten des SmartArt-Shapes
foreach (Aspose.Slides.SmartArt.ISmartArtNode node in smart.AllNodes)
{
String tc = node.TextFrame.Text;
// Prüfen, ob der Knoten ein Assistent-Knoten ist
if (node.IsAssistant)
{
// Assistent-Knoten auf false setzen und zu normalem Knoten machen
node.IsAssistant = false;
}
}
}
}
// Präsentation speichern
pres.Save("ChangeAssitantNode_out.pptx", Aspose.Slides.Export.SaveFormat.Pptx);
}
Füllformat des Knotens festlegen
Aspose.Slides for .NET ermöglicht das Hinzufügen benutzerdefinierter SmartArt‑Objekte und das Festlegen ihrer Füllformate. Dieser Artikel erklärt, wie SmartArt‑Objekte erstellt und zugegriffen und deren Füllformat mit Aspose.Slides for .NET festgelegt wird.
Bitte folgen Sie den nachstehenden Schritten:
- Erstellen Sie eine Instanz der Klasse
Presentation. - Erhalten Sie die Referenz einer Folie über deren Index.
- Fügen Sie ein SmartArt‑Objekt hinzu, indem Sie dessen LayoutType festlegen.
- Legen Sie das FillFormat für die SmartArt‑Knoten fest.
- Schreiben Sie die geänderte Präsentation als PPTX-Datei.
using (Presentation presentation = new Presentation())
{
// Zugriff auf die Folie
ISlide slide = presentation.Slides[0];
// Hinzufügen von SmartArt-Shape und Knoten
var chevron = slide.Shapes.AddSmartArt(10, 10, 800, 60, SmartArtLayoutType.ClosedChevronProcess);
var node = chevron.AllNodes.AddNode();
node.TextFrame.Text = "Some text";
// Festlegen der Füllfarbe des Knotens
foreach (var item in node.Shapes)
{
item.FillFormat.FillType = FillType.Solid;
item.FillFormat.SolidFillColor.Color = Color.Red;
}
// Speichern der Präsentation
presentation.Save("FillFormat_SmartArt_ShapeNode_out.pptx", SaveFormat.Pptx);
}
Miniaturbild des SmartArt‑untergeordneten Knotens erstellen
Entwickler können ein Miniaturbild eines untergeordneten Knotens eines SmartArt erzeugen, indem sie die folgenden Schritte ausführen:
- Instanziieren Sie die Klasse
Presentation, die die PPTX-Datei darstellt. - Fügen Sie SmartArt hinzu.
- Erhalten Sie die Referenz eines Knotens über dessen Index
- Ermitteln Sie das Miniaturbild.
- Speichern Sie das Miniaturbild in einem gewünschten Bildformat.
Das nachstehende Beispiel erzeugt ein Miniaturbild des SmartArt‑untergeordneten Knotens
using (Presentation presentation = new Presentation())
{
ISlide slide = presentation.Slides[0];
ISmartArt smartArt = slide.Shapes.AddSmartArt(10, 10, 400, 300, SmartArtLayoutType.BasicCycle);
ISmartArtNode node = smartArt.Nodes[1];
using (IImage image = node.Shapes[0].GetImage())
{
image.Save("SmartArt_ChildNote_Thumbnail_out.jpeg", ImageFormat.Jpeg);
}
}
FAQ
Unterstützt Aspose.Slides SmartArt-Animationen?
Ja. SmartArt wird wie ein normales Shape behandelt, sodass Sie Standardanimationen (Eintritt, Austritt, Betonung, Bewegungsbahnen) anwenden und das Timing anpassen können. Bei Bedarf können Sie auch Shapes innerhalb von SmartArt‑Knoten animieren.
Wie kann ich ein bestimmtes SmartArt auf einer Folie zuverlässig finden, wenn seine interne ID unbekannt ist?
Weisen Sie ihm über alternativen Text zu und suchen Sie danach. Das Setzen eines eindeutigen AltText auf dem SmartArt ermöglicht das programmgesteuerte Auffinden, ohne interne Kennungen zu verwenden.
Wird das Aussehen von SmartArt beim Konvertieren der Präsentation in PDF beibehalten?
Ja. Aspose.Slides rendert SmartArt mit hoher visueller Genauigkeit beim PDF-Export, wobei Layout, Farben und Effekte erhalten bleiben.
Kann ich ein Bild des gesamten SmartArt extrahieren (für Vorschaubilder oder Berichte)?
Ja. Sie können ein SmartArt-Shape in Rasterformate oder in SVG rendern, wodurch ein skalierbarer Vektor‑Ausgabe entsteht, die sich für Miniaturbilder, Berichte oder Web‑Nutzung eignet.