Gerenciar gráficos SmartArt em apresentações no .NET

Visão geral

Aspose.Slides permite criar e gerenciar gráficos SmartArt em apresentações do PowerPoint programaticamente. Este artigo explica como adicionar uma forma SmartArt a um slide, acessar formas SmartArt existentes, localizar SmartArt por um tipo de layout específico e atualizar sua aparência visual alterando o estilo SmartArt ou o estilo de cor.

Os exemplos mostram como trabalhar com formas SmartArt através da coleção de formas do slide da apresentação, verificar se uma forma é SmartArt e então modificar ou inspecionar suas propriedades.

Criar uma forma SmartArt

Aspose.Slides for .NET agora facilita a adição de formas SmartArt personalizadas em seus slides a partir do zero. Aspose.Slides for .NET fornece a API mais simples para criar formas SmartArt da maneira mais fácil. Para criar uma forma SmartArt em um slide, siga as etapas abaixo:

  • Crie uma instância da classe Presentation.
  • Obtenha a referência de um slide usando seu Índice.
  • Adicione uma forma SmartArt definindo seu LayoutType.
  • Grave a apresentação modificada como um arquivo PPTX.
// Instanciar a apresentação
using (Presentation pres = new Presentation())
{

    // Acessar o slide da apresentação
    ISlide slide = pres.Slides[0];

    // Adicionar forma Smart Art
    ISmartArt smart = slide.Shapes.AddSmartArt(0, 0, 400, 400, SmartArtLayoutType.BasicBlockList);

    // Salvar a apresentação
    pres.Save("SimpleSmartArt_out.pptx", Aspose.Slides.Export.SaveFormat.Pptx);
}

Acessar uma forma SmartArt em um slide

O código a seguir será usado para acessar as formas SmartArt adicionadas no slide da apresentação. No código de exemplo percorreremos cada forma dentro do slide e verificaremos se ela é uma forma SmartArt. Se a forma for do tipo SmartArt, faremos o cast para a instância SmartArt.

// Carregar a apresentação desejada
using (Presentation pres = new Presentation("AccessSmartArtShape.pptx"))
{

    // Percorrer todas as formas dentro do primeiro slide
    foreach (IShape shape in pres.Slides[0].Shapes)
    {
        // Verificar se a forma é do tipo SmartArt
        if (shape is ISmartArt)
        {
            // Fazer cast da forma para SmartArtEx
            ISmartArt smart = (ISmartArt)shape;
            System.Console.WriteLine("Shape Name:" + smart.Name);

        }
    }
}

Acessar uma forma SmartArt com um tipo de layout específico

O código de exemplo a seguir ajuda a acessar a forma SmartArt com um LayoutType específico. Observe que não é possível alterar o LayoutType do SmartArt, pois ele é somente leitura e definido apenas quando a forma SmartArt é adicionada.

  • Crie uma instância da classe Presentation e carregue a apresentação com a forma SmartArt.
  • Obtenha a referência do primeiro slide usando seu Índice.
  • Percorra cada forma dentro do primeiro slide.
  • Verifique se a forma é do tipo SmartArt e faça o cast da forma selecionada para SmartArt, caso seja SmartArt.
  • Verifique a forma SmartArt com o LayoutType desejado e execute as ações necessárias posteriormente.
using (Presentation presentation = new Presentation("AccessSmartArtShape.pptx"))
{
    // Percorrer todas as formas dentro do primeiro slide
    foreach (IShape shape in presentation.Slides[0].Shapes)
    {
        // Verificar se a forma é do tipo SmartArt
        if (shape is ISmartArt)
        {
            // Fazer cast da forma para SmartArtEx
            ISmartArt smart = (ISmartArt) shape;

            // Verificando o layout do SmartArt
            if (smart.Layout == SmartArtLayoutType.BasicBlockList)
            {
                Console.WriteLine("Do some thing here....");
            }
        }
    }
}

Alterar o estilo de uma forma SmartArt

O código de exemplo a seguir ajuda a acessar a forma SmartArt com um LayoutType específico.

  • Crie uma instância da classe Presentation e carregue a apresentação com a forma SmartArt.
  • Obtenha a referência do primeiro slide usando seu Índice.
  • Percorra cada forma dentro do primeiro slide.
  • Verifique se a forma é do tipo SmartArt e faça o cast da forma selecionada para SmartArt, caso seja SmartArt.
  • Encontre a forma SmartArt com o Estilo desejado.
  • Defina o novo Estilo para a forma SmartArt.
  • Salve a apresentação.
using (Presentation presentation = new Presentation("AccessSmartArtShape.pptx"))
{
    // Percorrer todas as formas dentro do primeiro slide
    foreach (IShape shape in presentation.Slides[0].Shapes)
    {
        // Verificar se a forma é do tipo SmartArt
        if (shape is ISmartArt)
        {
            // Fazer cast da forma para SmartArtEx
            ISmartArt smart = (ISmartArt)shape;

            // Verificando o estilo do SmartArt
            if (smart.QuickStyle == SmartArtQuickStyleType.SimpleFill)
            {
                // Alterando o estilo do SmartArt
                smart.QuickStyle = SmartArtQuickStyleType.Cartoon;
            }
        }
    }

    // Salvando a apresentação
    presentation.Save("ChangeSmartArtStyle_out.pptx", SaveFormat.Pptx);
}

Alterar o estilo de cor de uma forma SmartArt

Neste exemplo, aprenderemos a alterar o estilo de cor de qualquer forma SmartArt. No código de exemplo a seguir será acessada a forma SmartArt com um estilo de cor específico e seu estilo será alterado.

  • Crie uma instância da classe Presentation e carregue a apresentação com a forma SmartArt.
  • Obtenha a referência do primeiro slide usando seu Índice.
  • Percorra cada forma dentro do primeiro slide.
  • Verifique se a forma é do tipo SmartArt e faça o cast da forma selecionada para SmartArt, caso seja SmartArt.
  • Encontre a forma SmartArt com o Estilo de Cor desejado.
  • Defina o novo Estilo de Cor para a forma SmartArt.
  • Salve a apresentação.
using (Presentation presentation = new Presentation("AccessSmartArtShape.pptx"))
{
    // Percorrer todas as formas dentro do primeiro slide
    foreach (IShape shape in presentation.Slides[0].Shapes)
    {
        // Verificar se a forma é do tipo SmartArt
        if (shape is ISmartArt)
        {
            // Fazer cast da forma para SmartArtEx
            ISmartArt smart = (ISmartArt)shape;

            // Verificando o tipo de cor do SmartArt
            if (smart.ColorStyle == SmartArtColorType.ColoredFillAccent1)
            {
                // Alterando o tipo de cor do SmartArt
                smart.ColorStyle = SmartArtColorType.ColorfulAccentColors;
            }
        }
    }

    // Salvando a apresentação
    presentation.Save("ChangeSmartArtColorStyle_out.pptx", SaveFormat.Pptx);
}

FAQ

Posso animar o SmartArt como um único objeto?

Sim. SmartArt é uma forma, portanto você pode aplicar standard animations via a API de animações (entrada, saída, ênfase, caminhos de movimento) assim como para outras formas.

Como posso encontrar um SmartArt específico em um slide se não conheço seu ID interno?

Defina e use o Texto Alternativo (AltText) e procure a forma por esse valor — esta é uma maneira recomendada de localizar a forma alvo.

Posso agrupar SmartArt com outras formas?

Sim. Você pode agrupar SmartArt com outras formas (imagens, tabelas etc.) e então manipulate the group.

Como obtenho uma imagem de um SmartArt específico (por exemplo, para pré‑visualização ou relatório)?

Exporte uma miniatura/imagem da forma; a biblioteca pode render individual shapes para arquivos raster (PNG/JPG/TIFF).

A aparência do SmartArt será preservada ao converter toda a apresentação para PDF?

Sim. O mecanismo de renderização visa alta fidelidade para PDF export, com uma variedade de opções de qualidade e compatibilidade.