Cuadro de texto

En Aspose.Slides, un cuadro de texto se representa mediante un AutoShape. Casi cualquier forma puede contener texto, pero un cuadro de texto típico no tiene relleno ni borde y muestra solo texto.

Esta guía explica cómo agregar, acceder y eliminar cuadros de texto de forma programática.

Agregar un Cuadro de Texto

Un cuadro de texto es simplemente un AutoShape sin relleno ni borde y con algo de texto formateado. Así es como se crea uno:

public static void Add_TextBox()
{
    using var pres = new Presentation();

    // Create a rectangle shape (defaults to filled with border and no text)
    var textBox = pres.Slides[0].Shapes.AddAutoShape(ShapeType.Rectangle, x: 50, y: 75, width: 150, height: 100);

    // Remove fill and border to make it look like a typical text box
    textBox.FillFormat.FillType = FillType.NoFill;
    textBox.LineFormat.FillFormat.FillType = FillType.NoFill;

    // Set text formatting
    textBox.TextFrame.Paragraphs[0].ParagraphFormat.DefaultPortionFormat.FillFormat.FillType = FillType.Solid;
    textBox.TextFrame.Paragraphs[0].ParagraphFormat.DefaultPortionFormat.FillFormat.SolidFillColor.Color = Color.Black;

    // Assign the actual text content
    textBox.TextFrame.Text = "Some text...";
}

💡 Nota: Cualquier AutoShape que contenga un TextFrame no vacío puede funcionar como un cuadro de texto.

Acceder a Cuadros de Texto por Contenido

Para encontrar todos los cuadros de texto que contengan una palabra clave específica (p.ej. “Slide”), recorra las formas y verifique su texto:

public static void Access_TextBox()
{
    using var pres = new Presentation();

    foreach (var shape in pres.Slides[0].Shapes)
    {
        // Only AutoShapes can contain editable text
        if (shape is AutoShape autoShape)
        {
            if (autoShape.TextFrame.Text.Contains("Slide"))
            {
                // Do something with the matching text box
            }
        }
    }
}

Eliminar Cuadros de Texto por Contenido

Este ejemplo encuentra y elimina todos los cuadros de texto en la primera diapositiva que contienen una palabra clave específica:

public static void Remove_TextBox()
{
    using var pres = new Presentation();

    var shapesToRemove = pres.Slides[0].Shapes
        .Where(s => s is AutoShape autoShape && autoShape.TextFrame.Text.Contains("Slide"))
        .ToList();

    shapesToRemove.ForEach(shape => pres.Slides[0].Shapes.Remove(shape));
}

💡 Consejo: Siempre cree una copia de la colección de formas antes de modificarla durante la iteración para evitar errores de modificación de la colección.