Zarządzanie węzłami kształtu SmartArt w prezentacjach na Androidzie

Przegląd

Grafiki SmartArt w prezentacjach PowerPoint są organizowane za pomocą węzłów, które zawierają tekst i definiują strukturę diagramu. Aspose.Slides umożliwia programowe operowanie na tych węzłach SmartArt: dodawanie nowych węzłów i węzłów podrzędnych, wstawianie węzłów podrzędnych w określonej pozycji, dostęp do istniejących węzłów oraz odczytywanie ich tekstu, poziomu i pozycji.

Ten artykuł wyjaśnia, jak zarządzać węzłami kształtów SmartArt. Pokazuje, jak usuwać węzły, pracować z węzłami podrzędnymi według indeksu lub pozycji, zmienić węzeł asystenta na węzeł zwykły, dostosować pozycję, rozmiar i obrót kształtów węzłów SmartArt, ustawić formaty wypełnienia węzłów oraz wygenerować miniaturę obrazu dla węzła podrzędnego SmartArt.

Dodaj węzeł SmartArt

Aspose.Slides for Android via Java udostępnia najprostsze API do zarządzania kształtami SmartArt w najłatwiejszy sposób. Poniższy przykładowy kod pomoże dodać węzeł i węzeł podrzędny wewnątrz kształtu SmartArt.

  1. Utwórz instancję klasy Presentation i załaduj prezentację z kształtem SmartArt.
  2. Uzyskaj referencję do pierwszego slajdu, używając jego indeksu.
  3. Przejdź przez wszystkie kształty na pierwszym slajdzie.
  4. Sprawdź, czy kształt jest typu SmartArt i rzutuj wybrany kształt na SmartArt, jeśli jest SmartArt.
  5. Add a new Node w kształcie SmartArt NodeCollection i ustaw tekst w TextFrame.
  6. Teraz, Add Child Node w nowo dodanym węźle SmartArt i ustaw tekst w TextFrame
  7. Zapisz prezentację.
// Załaduj żądaną prezentację
Presentation pres = new Presentation("SimpleSmartArt.pptx");
try {
    // Przejdź przez wszystkie kształty na pierwszym slajdzie
    for (IShape shape : pres.getSlides().get_Item(0).getShapes()) 
    {
        // Sprawdź, czy kształt jest typu SmartArt
        if (shape instanceof SmartArt) 
        {
            // Rzutuj kształt na SmartArt
            SmartArt smart = (SmartArt) shape;
    
            // Dodawanie nowego węzła SmartArt
            SmartArtNode TemNode = (SmartArtNode) smart.getAllNodes().addNode();
    
            // Dodawanie tekstu
            TemNode.getTextFrame().setText("Test");
    
            // Dodawanie nowego węzła podrzędnego w węźle nadrzędnym. Zostanie dodany na końcu kolekcji
            SmartArtNode newNode = (SmartArtNode) TemNode.getChildNodes().addNode();
    
            // Dodawanie tekstu
            newNode.getTextFrame().setText("New Node Added");
        }
    }
    
    // Zapisywanie prezentacji
    pres.save("AddSmartArtNode.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

Dodaj węzeł SmartArt w określonej pozycji

W poniższym przykładzie kodu wyjaśniono, jak dodać węzły podrzędne należące do odpowiednich węzłów kształtu SmartArt w określonej pozycji.

  1. Utwórz instancję klasy Presentation.
  2. Uzyskaj referencję do pierwszego slajdu, używając jego indeksu.
  3. Dodaj kształt SmartArt typu StackedList na wybranym slajdzie.
  4. Uzyskaj dostęp do pierwszego węzła w dodanym kształcie SmartArt
  5. Teraz dodaj Child Node dla wybranego Node na pozycji 2 i ustaw jego tekst.
  6. Zapisz prezentację
// Tworzenie instancji prezentacji
Presentation pres = new Presentation();
try {
    // Dostęp do slajdu prezentacji
    ISlide slide = pres.getSlides().get_Item(0);

    // Dodaj Smart Art IShape
    ISmartArt smart = slide.getShapes().addSmartArt(0, 0, 400, 400, SmartArtLayoutType.StackedList);

    // Dostęp do węzła SmartArt o indeksie 0
    ISmartArtNode node = smart.getAllNodes().get_Item(0);

    // Dodawanie nowego węzła podrzędnego na pozycji 2 w węźle nadrzędnym
    SmartArtNode chNode = (SmartArtNode) ((SmartArtNodeCollection) node.getChildNodes()).addNodeByPosition(2);

    // Dodaj tekst
    chNode.getTextFrame().setText("Sample Text Added");

    // Zapisz prezentację
    pres.save("AddSmartArtNodeByPosition.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

Uzyskaj dostęp do węzła SmartArt

Poniższy przykładowy kod pomoże uzyskać dostęp do węzłów wewnątrz kształtu SmartArt. Należy pamiętać, że nie można zmienić właściwości LayoutType SmartArt, ponieważ jest ona tylko do odczytu i jest ustawiana wyłącznie przy dodawaniu kształtu SmartArt.

  1. Utwórz instancję klasy Presentation i załaduj prezentację z kształtem SmartArt.
  2. Uzyskaj referencję do pierwszego slajdu, używając jego indeksu.
  3. Przejdź przez wszystkie kształty na pierwszym slajdzie.
  4. Sprawdź, czy kształt jest typu SmartArt i rzutuj wybrany kształt na SmartArt, jeśli jest SmartArt.
  5. Przejdź przez wszystkie Nodes wewnątrz kształtu SmartArt.
  6. Uzyskaj dostęp i wyświetl informacje, takie jak pozycja węzła SmartArt, poziom i tekst.
// Utwórz instancję klasy Presentation
Presentation pres = new Presentation("SmartArtShape.pptx");
try {
    // Pobierz pierwszy slajd
    ISlide slide = pres.getSlides().get_Item(0);
    
    // Przejdź przez wszystkie kształty na pierwszym slajdzie
    for (IShape shape : slide.getShapes()) 
    {
        // Sprawdź, czy kształt jest typu SmartArt
        if (shape instanceof ISmartArt) 
        {
            // Rzutuj kształt na SmartArt
            ISmartArt smart = (ISmartArt) shape;
    
            // Przejdź przez wszystkie węzły wewnątrz SmartArt
            for (int i = 0; i < smart.getAllNodes().size(); i++) 
            {
                // Uzyskiwanie dostępu do węzła SmartArt o indeksie i
                SmartArtNode node = (SmartArtNode) smart.getAllNodes().get_Item(i);
    
                // Wyświetlanie parametrów węzła SmartArt
                System.out.print(node.getTextFrame().getText() + " " + node.getLevel() + " " + node.getPosition());
            }
        }
    }
} finally {
    if (pres != null) pres.dispose();
}

Uzyskaj dostęp do węzła podrzędnego SmartArt

Poniższy przykładowy kod pomoże uzyskać dostęp do węzłów podrzędnych należących do odpowiednich węzłów kształtu SmartArt.

  1. Utwórz instancję klasy Presentation i załaduj prezentację z kształtem SmartArt.
  2. Uzyskaj referencję do pierwszego slajdu, używając jego indeksu.
  3. Przejdź przez wszystkie kształty na pierwszym slajdzie.
  4. Sprawdź, czy kształt jest typu SmartArt i rzutuj wybrany kształt na SmartArt, jeśli jest SmartArt.
  5. Przejdź przez wszystkie Nodes wewnątrz kształtu SmartArt.
  6. Dla każdego wybranego [Node] kształtu SmartArt, przejdź przez wszystkie Child Nodes wewnątrz danego węzła.
  7. Uzyskaj dostęp i wyświetl informacje, takie jak pozycja Child Node , poziom i tekst.
// Utwórz instancję klasy Presentation
Presentation pres = new Presentation("AccessChildNodes.pptx");
try {
    // Pobierz pierwszy slajd
    ISlide slide = pres.getSlides().get_Item(0);
    
    // Przejdź przez wszystkie kształty na pierwszym slajdzie
    for (IShape shape : slide.getShapes()) 
    {
        // Sprawdź, czy kształt jest typu SmartArt
        if (shape instanceof ISmartArt) 
        {
            // Rzutuj kształt na SmartArt
            ISmartArt smart = (ISmartArt) shape;
    
            // Przejdź przez wszystkie węzły wewnątrz SmartArt
            for (int i = 0; i < smart.getAllNodes().size(); i++) 
            {
                // Uzyskiwanie dostępu do węzła SmartArt o indeksie i
                SmartArtNode node0 = (SmartArtNode) smart.getAllNodes().get_Item(i);
                
                // Przechodzenie przez węzły podrzędne w węźle SmartArt o indeksie i
                for (int j = 0; j < node0.getChildNodes().size(); j++) 
                {
                    // Uzyskiwanie dostępu do węzła podrzędnego w węźle SmartArt
                    SmartArtNode node = (SmartArtNode) node0.getChildNodes().get_Item(j);
    
                    // Wyświetlanie parametrów węzła podrzędnego SmartArt
                    System.out.print("j = " + j + ", Text = " + node.getTextFrame().getText() + ",  Level = " + node.getLevel() + ", Position = " + node.getPosition());
                }
            }
        }
    }
} finally {
    if (pres != null) pres.dispose();
}

Uzyskaj dostęp do węzła podrzędnego SmartArt w określonej pozycji

W tym przykładzie nauczymy się uzyskiwać dostęp do węzłów podrzędnych w określonej pozycji należących do odpowiednich węzłów kształtu SmartArt.

  1. Utwórz instancję klasy Presentation .
  2. Uzyskaj referencję do pierwszego slajdu, używając jego indeksu.
  3. Dodaj kształt SmartArt typu StackedList.
  4. Uzyskaj dostęp do dodanego kształtu SmartArt.
  5. Uzyskaj dostęp do węzła o indeksie 0 w wybranym kształcie SmartArt.
  6. Teraz uzyskaj dostęp do Child Node na pozycji 1 dla wybranego węzła SmartArt, używając metody get_Item().
  7. Uzyskaj dostęp i wyświetl informacje, takie jak pozycja Child Node , poziom i tekst.
// Utwórz instancję prezentacji
Presentation pres = new Presentation();
try {
    // Dostęp do pierwszego slajdu
    ISlide slide = pres.getSlides().get_Item(0);
    
    // Dodawanie kształtu SmartArt na pierwszym slajdzie
    ISmartArt smart = slide.getShapes().addSmartArt(0, 0, 400, 400, SmartArtLayoutType.StackedList);
    
    // Uzyskiwanie dostępu do węzła SmartArt o indeksie 0
    ISmartArtNode node = smart.getAllNodes().get_Item(0);
    
    // Uzyskiwanie dostępu do węzła podrzędnego na pozycji 1 w węźle nadrzędnym
    int position = 1;
    SmartArtNode chNode = (SmartArtNode) ((SmartArtNodeCollection) node.getChildNodes()).get_Item(position);
    
    // Wyświetlanie parametrów węzła podrzędnego SmartArt
    System.out.print("Text = " + chNode.getTextFrame().getText() + ",  Level = " + chNode.getLevel() + ", Position = " + chNode.getPosition());
} finally {
    if (pres != null) pres.dispose();
}

Usuń węzeł SmartArt

W tym przykładzie nauczymy się usuwać węzły wewnątrz kształtu SmartArt.

  1. Utwórz instancję klasy Presentation i załaduj prezentację z kształtem SmartArt.
  2. Uzyskaj referencję do pierwszego slajdu, używając jego indeksu.
  3. Przejdź przez wszystkie kształty na pierwszym slajdzie.
  4. Sprawdź, czy kształt jest typu SmartArt i rzutuj wybrany kształt na SmartArt, jeśli jest SmartArt.
  5. Sprawdź, czy SmartArt ma więcej niż 0 węzłów.
  6. Wybierz węzeł SmartArt, który ma zostać usunięty.
  7. Teraz usuń wybrany węzeł, używając metody RemoveNode.
  8. Zapisz prezentację.
// Załaduj żądaną prezentację
Presentation pres = new Presentation("AddSmartArtNode.pptx");
try {
    // Przejdź przez wszystkie kształty na pierwszym slajdzie
    for (IShape shape : pres.getSlides().get_Item(0).getShapes()) 
    {
        // Sprawdź, czy kształt jest typu SmartArt
        if (shape instanceof ISmartArt) 
        {
            // Rzutuj kształt na SmartArt
            ISmartArt smart = (ISmartArt) shape;
    
            if (smart.getAllNodes().size() > 0) 
            {
                // Uzyskiwanie dostępu do węzła SmartArt o indeksie 0
                ISmartArtNode node = smart.getAllNodes().get_Item(0);
    
                // Usuwanie wybranego węzła
                smart.getAllNodes().removeNode(node);
            }
        }
    }
    
    // Zapisz prezentację
    pres.save("RemoveSmartArtNode.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

Usuń węzeł SmartArt z określonej pozycji

W tym przykładzie nauczymy się usuwać węzły wewnątrz kształtu SmartArt w konkretnej pozycji.

  1. Utwórz instancję klasy Presentation i załaduj prezentację z kształtem SmartArt.
  2. Uzyskaj referencję do pierwszego slajdu, używając jego indeksu.
  3. Przejdź przez wszystkie kształty na pierwszym slajdzie.
  4. Sprawdź, czy kształt jest typu SmartArt i rzutuj wybrany kształt na SmartArt, jeśli jest SmartArt.
  5. Wybierz węzeł kształtu SmartArt o indeksie 0.
  6. Teraz sprawdź, czy wybrany węzeł SmartArt ma więcej niż 2 węzły podrzędne.
  7. Teraz usuń węzeł na Position 1 za pomocą metody RemoveNode.
  8. Zapisz prezentację.
// Załaduj żądaną prezentację
Presentation pres = new Presentation("AddSmartArtNode.pptx");
try {
    // Przejdź przez wszystkie kształty na pierwszym slajdzie
    for (IShape shape : pres.getSlides().get_Item(0).getShapes()) 
    {
        // Sprawdź, czy kształt jest typu SmartArt
        if (shape instanceof SmartArt) 
        {
            // Rzutuj kształt na SmartArt
            SmartArt smart = (SmartArt) shape;
    
            if (smart.getAllNodes().size() > 0) 
            {
                // Uzyskiwanie dostępu do węzła SmartArt o indeksie 0
                ISmartArtNode node = smart.getAllNodes().get_Item(0);
    
                if (node.getChildNodes().size() >= 2) 
                {
                    // Usuwanie węzła podrzędnego na pozycji 1
                    (node.getChildNodes()).removeNode(1);
                }
            }
        }
    }
    
    // Zapisz prezentację
    pres.save("RemoveSmartArtNodeByPosition.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

Ustaw niestandardową pozycję dla węzła podrzędnego w obiekcie SmartArt

Teraz Aspose.Slides for Android via Java obsługuje ustawianie właściwości SmartArtShape X i Y. Poniższy fragment kodu pokazuje, jak ustawić niestandardową pozycję, rozmiar i obrót SmartArtShape; należy również zauważyć, że dodawanie nowych węzłów powoduje przeliczenie pozycji i rozmiarów wszystkich węzłów. Dzięki ustawieniom niestandardowej pozycji użytkownik może dostosować węzły do własnych wymagań.

// Utwórz instancję klasy Presentation
Presentation pres = new Presentation("SimpleSmartArt.pptx");
try{
    ISmartArt smart = pres.getSlides().get_Item(0).getShapes().addSmartArt(20, 20, 600, 500, SmartArtLayoutType.OrganizationChart);

    // Przenieś kształt SmartArt na nową pozycję
    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);

    // Zmień szerokość kształtu SmartArt
    node = smart.getAllNodes().get_Item(2);
    shape = node.getShapes().get_Item(1);
    shape.setWidth(shape.getWidth() + shape.getWidth() * 2);

    // Zmień wysokość kształtu SmartArt
    node = smart.getAllNodes().get_Item(3);
    shape = node.getShapes().get_Item(1);
    shape.setHeight(shape.getHeight() + shape.getHeight() * 2);

    // Zmień obrót kształtu SmartArt
    node = smart.getAllNodes().get_Item(4);
    shape = node.getShapes().get_Item(1);
    shape.setRotation(90);

    pres.save("SmartArt.pptx", SaveFormat.Pptx);
}finally {
    pres.dispose();
}

Sprawdź węzeł asystenta

Do naszych badań w różnych sekcjach tego artykułu użyjemy następującego źródłowego kształtu SmartArt.

todo:image_alt_text
Rysunek: źródłowy kształt SmartArt na slajdzie

W poniższym przykładzie kodu zbadamy, jak zidentyfikować węzły asystenta w kolekcji węzłów SmartArt i jak je zmienić.

  1. Utwórz instancję klasy Presentation i załaduj prezentację z kształtem SmartArt.
  2. Uzyskaj referencję do drugiego slajdu, używając jego indeksu.
  3. Przejdź przez wszystkie kształty na pierwszym slajdzie.
  4. Sprawdź, czy kształt jest typu SmartArt i rzutuj wybrany kształt na SmartArt, jeśli jest SmartArt.
  5. Przejdź przez wszystkie węzły w kształcie SmartArt i sprawdź, czy są Assistant Nodes.
  6. Zmieni status węzła asystenta na węzeł normalny.
  7. Zapisz prezentację.
// Tworzenie instancji prezentacji
Presentation pres = new Presentation("AddNodes.pptx");
try {
    // Przechodzenie przez wszystkie kształty na pierwszym slajdzie
    for (IShape shape : pres.getSlides().get_Item(0).getShapes()) 
    {
        // Sprawdź, czy kształt jest typu SmartArt
        if (shape instanceof ISmartArt) 
        {
            // Rzutuj kształt na SmartArt
            ISmartArt smart = (SmartArt) shape;
    
            // Przechodzenie przez wszystkie węzły kształtu SmartArt
            for (int i = 0; i < smart.getAllNodes().size(); i++) 
            {
                ISmartArtNode node = smart.getAllNodes().get_Item(i);
                // Sprawdź, czy węzeł jest węzłem asystenta
                if (node.isAssistant()) 
                {
                    // Ustawienie węzła asystenta na false i przekształcenie go w węzeł normalny
                    node.isAssistant();
                }
            }
        }
    }
    
    // Zapisz prezentację
    pres.save("ChangeAssitantNode.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}
todo:image_alt_text
Rysunek: zmienione węzły asystenta w kształcie SmartArt na slajdzie

Ustaw format wypełnienia węzła

Aspose.Slides for Android via Java umożliwia dodawanie niestandardowych kształtów SmartArt i ustawianie ich formatu wypełnienia. Ten artykuł wyjaśnia, jak tworzyć i uzyskiwać dostęp do kształtów SmartArt oraz jak ustawiać ich format wypełnienia przy użyciu Aspose.Slides for Android via Java.

Proszę wykonać następujące kroki:

  1. Utwórz instancję klasy Presentation.
  2. Uzyskaj referencję do slajdu, używając jego indeksu.
  3. Dodaj kształt SmartArt, ustawiając jego LayoutType.
  4. Ustaw FillFormat dla węzłów kształtu SmartArt.
  5. Zapisz zmodyfikowaną prezentację jako plik PPTX.
// Utwórz instancję prezentacji
Presentation pres = new Presentation();
try {
    // Dostęp do slajdu
    ISlide slide = pres.getSlides().get_Item(0);
    
    // Dodawanie kształtu SmartArt i węzłów
    ISmartArt chevron = slide.getShapes().addSmartArt(10, 10, 800, 60, SmartArtLayoutType.ClosedChevronProcess);
    ISmartArtNode node = chevron.getAllNodes().addNode();
    node.getTextFrame().setText("Some text");
    
    // Ustawianie koloru wypełnienia węzła
    for (IShape item : node.getShapes()) 
    {
        item.getFillFormat().setFillType(FillType.Solid);
        item.getFillFormat().getSolidFillColor().setColor(Color.RED);
    }
    
    // Zapisz prezentację
    pres.save("TestSmart.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

Wygeneruj miniaturę węzła podrzędnego SmartArt

Programiści mogą wygenerować miniaturę węzła podrzędnego SmartArt, postępując zgodnie z poniższymi krokami:

  1. Utwórz instancję klasy Presentation.
  2. Add SmartArt.
  3. Uzyskaj referencję do węzła, używając jego indeksu
  4. Pobierz obraz miniatury.
  5. Zapisz obraz miniatury w wybranym formacie obrazu.
// Utwórz klasę Presentation reprezentującą plik PPTX 
Presentation pres = new Presentation();
try {
    // Dodaj SmartArt 
    ISmartArt smart = pres.getSlides().get_Item(0).getShapes().addSmartArt(10, 10, 400, 300, SmartArtLayoutType.BasicCycle);

    // Uzyskaj referencję do węzła za pomocą jego indeksu  
    ISmartArtNode node = smart.getNodes().get_Item(1);

    // Pobierz miniaturę
    IImage slideImage = node.getShapes().get_Item(0).getImage();

    // Zapisz miniaturę
    try {
          slideImage.save("SmartArt_ChildNote_Thumbnail.png", ImageFormat.Png);
    } finally {
         if (slideImage != null) slideImage.dispose();
    }
} finally {
    if (pres != null) pres.dispose();
}

FAQ

Czy animacje SmartArt są obsługiwane?

Tak. SmartArt jest traktowany jako zwykły kształt, więc możesz zastosować standardowe animacje (wejścia, wyjścia, podkreślenia, ścieżki ruchu) i dostosować ich czas. W razie potrzeby możesz również animować kształty wewnątrz węzłów SmartArt.

Jak mogę niezawodnie zlokalizować konkretny SmartArt na slajdzie, jeśli jego wewnętrzny identyfikator jest nieznany?

Przypisz i wyszukaj po alternatywnym tekście. Ustawienie wyróżniającego się AltText w SmartArt pozwala znaleźć go programowo bez polegania na wewnętrznych identyfikatorach.

Czy wygląd SmartArt zostanie zachowany przy konwersji prezentacji do PDF?

Tak. Aspose.Slides renderuje SmartArt z wysoką wiernością wizualną podczas eksportu do PDF, zachowując układ, kolory i efekty.

Czy mogę wyodrębnić obraz całego SmartArt (do podglądów lub raportów)?

Tak. Możesz renderować kształt SmartArt do formatów rastrowych lub do SVG, co umożliwia uzyskanie skalowalnego wyjścia wektorowego, przydatnego do miniatur, raportów lub zastosowań internetowych.