Gestionar gráficos SmartArt en presentaciones con .NET

Crear una forma SmartArt

Aspose.Slides para .NET ahora permite agregar formas SmartArt personalizadas en sus diapositivas desde cero. Aspose.Slides para .NET ha proporcionado la API más simple para crear formas SmartArt de la manera más fácil. Para crear una forma SmartArt en una diapositiva, siga los pasos a continuación:

  • Cree una instancia de la clase Presentation.
  • Obtenga la referencia de una diapositiva usando su índice.
  • Agregue una forma SmartArt estableciendo su LayoutType.
  • Guarde la presentación modificada como un archivo PPTX.
// Instanciar la presentación
using (Presentation pres = new Presentation())
{
 
    // Acceder a la diapositiva de la presentación
    ISlide slide = pres.Slides[0];

    // Añadir forma SmartArt
    ISmartArt smart = slide.Shapes.AddSmartArt(0, 0, 400, 400, SmartArtLayoutType.BasicBlockList);

    // Guardar la presentación
    pres.Save("SimpleSmartArt_out.pptx", Aspose.Slides.Export.SaveFormat.Pptx);
}

Acceder a una forma SmartArt en una diapositiva

El siguiente código se usará para acceder a las formas SmartArt agregadas en la diapositiva de la presentación. En el código de ejemplo recorreremos cada forma dentro de la diapositiva y verificaremos si es una forma SmartArt. Si la forma es del tipo SmartArt, la convertiremos (typecast) a una instancia de SmartArt.

// Cargar la presentación deseada
using (Presentation pres = new Presentation("AccessSmartArtShape.pptx"))
{

    // Recorrer cada forma dentro de la primera diapositiva
    foreach (IShape shape in pres.Slides[0].Shapes)
    {
        // Verificar si la forma es de tipo SmartArt
        if (shape is ISmartArt)
        {
            // Convertir la forma a SmartArtEx
            ISmartArt smart = (ISmartArt)shape;
            System.Console.WriteLine("Shape Name:" + smart.Name);

        }
    }
}

Acceder a una forma SmartArt con un tipo de diseño particular

El siguiente código de ejemplo le ayudará a acceder a la forma SmartArt con un LayoutType particular. Tenga en cuenta que no puede cambiar el LayoutType del SmartArt ya que es de solo lectura y solo se establece cuando se agrega la forma SmartArt.

  • Cree una instancia de la clase Presentation y cargue la presentación con la forma SmartArt.
  • Obtenga la referencia de la primera diapositiva usando su índice.
  • Recorra cada forma dentro de la primera diapositiva.
  • Verifique si la forma es de tipo SmartArt y conviértala (typecast) a SmartArt si lo es.
  • Verifique la forma SmartArt con el LayoutType particular y realice lo que sea necesario a continuación.
using (Presentation presentation = new Presentation("AccessSmartArtShape.pptx"))
{
    // Recorrer cada forma dentro de la primera diapositiva
    foreach (IShape shape in presentation.Slides[0].Shapes)
    {
        // Verificar si la forma es de tipo SmartArt
        if (shape is ISmartArt)
        {
            // Convertir la forma a SmartArtEx
            ISmartArt smart = (ISmartArt) shape;

            // Comprobar el diseño de SmartArt
            if (smart.Layout == SmartArtLayoutType.BasicBlockList)
            {
                Console.WriteLine("Do some thing here....");
            }
        }
    }
}

Cambiar el estilo de una forma SmartArt

El siguiente código de ejemplo le ayudará a acceder a la forma SmartArt con un LayoutType particular.

  • Cree una instancia de la clase Presentation y cargue la presentación con la forma SmartArt.
  • Obtenga la referencia de la primera diapositiva usando su índice.
  • Recorra cada forma dentro de la primera diapositiva.
  • Verifique si la forma es de tipo SmartArt y conviértala (typecast) a SmartArt si lo es.
  • Encuentre la forma SmartArt con un estilo particular.
  • Establezca el nuevo estilo para la forma SmartArt.
  • Guarde la presentación.
using (Presentation presentation = new Presentation("AccessSmartArtShape.pptx"))
{
    // Recorrer cada forma dentro de la primera diapositiva
    foreach (IShape shape in presentation.Slides[0].Shapes)
    {
        // Verificar si la forma es de tipo SmartArt
        if (shape is ISmartArt)
        {
            // Convertir forma a SmartArtEx
            ISmartArt smart = (ISmartArt)shape;

            // Comprobar el estilo de SmartArt
            if (smart.QuickStyle == SmartArtQuickStyleType.SimpleFill)
            {
                // Cambiar el estilo de SmartArt
                smart.QuickStyle = SmartArtQuickStyleType.Cartoon;
            }
        }
    }

    // Guardar la presentación
    presentation.Save("ChangeSmartArtStyle_out.pptx", SaveFormat.Pptx);
}

Cambiar el estilo de color de una forma SmartArt

En este ejemplo, aprenderemos a cambiar el estilo de color de cualquier forma SmartArt. En el siguiente código de ejemplo se accederá a la forma SmartArt con un estilo de color particular y se cambiará su estilo.

  • Cree una instancia de la clase Presentation y cargue la presentación con la forma SmartArt.
  • Obtenga la referencia de la primera diapositiva usando su índice.
  • Recorra cada forma dentro de la primera diapositiva.
  • Verifique si la forma es de tipo SmartArt y conviértala (typecast) a SmartArt si lo es.
  • Encuentre la forma SmartArt con un estilo de color particular.
  • Establezca el nuevo estilo de color para la forma SmartArt.
  • Guarde la presentación.
using (Presentation presentation = new Presentation("AccessSmartArtShape.pptx"))
{
    // Recorrer cada forma dentro de la primera diapositiva
    foreach (IShape shape in presentation.Slides[0].Shapes)
    {
        // Verificar si la forma es de tipo SmartArt
        if (shape is ISmartArt)
        {
            // Convertir forma a SmartArtEx
            ISmartArt smart = (ISmartArt)shape;

            // Comprobar el tipo de color del SmartArt
            if (smart.ColorStyle == SmartArtColorType.ColoredFillAccent1)
            {
                // Cambiar el tipo de color del SmartArt
                smart.ColorStyle = SmartArtColorType.ColorfulAccentColors;
            }
        }
    }

    // Guardar la presentación
    presentation.Save("ChangeSmartArtColorStyle_out.pptx", SaveFormat.Pptx);
}

Preguntas frecuentes

¿Puedo animar SmartArt como un solo objeto? Sí. SmartArt es una forma, por lo que puede aplicar animaciones estándar a través de la API de animaciones (entrada, salida, énfasis, rutas de movimiento) al igual que con otras formas.

¿Cómo puedo encontrar un SmartArt específico en una diapositiva si no conozco su ID interno? Establezca y use el Texto alternativo (AltText) y busque la forma por ese valor; esta es una forma recomendada de localizar la forma objetivo.

¿Puedo agrupar SmartArt con otras formas? Sí. Puede agrupar SmartArt con otras formas (imágenes, tablas, etc.) y luego manipular el grupo.

¿Cómo obtengo una imagen de un SmartArt específico (p. ej., para una vista previa o informe)? Exporte una miniatura/imagen de la forma; la biblioteca puede renderizar formas individuales a archivos raster (PNG/JPG/TIFF).

¿Se preservará la apariencia de SmartArt al convertir toda la presentación a PDF? Sí. El motor de renderizado apunta a alta fidelidad para la exportación a PDF, con una variedad de opciones de calidad y compatibilidad.