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
AutoShapeque contenga unTextFrameno 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.