Como Adicionar Formas ao PowerPoint em .NET
Aspose.Slides FOSS for .NET suporta a adição de AutoShapes, Tables, Connectors e PictureFrames aos slides de apresentação. Todos os tipos de forma são adicionados através da coleção slide.Shapes.
Guia passo a passo
Etapa 1: Instalar o Pacote
dotnet add package Aspose.Slides.FossVerifique a instalação:
using Aspose.Slides.Foss;
Console.WriteLine("Ready");Etapa 2: Criar uma Apresentação
Sempre use Presentation com uma declaração using.
using Aspose.Slides.Foss;
using Aspose.Slides.Foss.Export;
using var prs = new Presentation();
var slide = prs.Slides[0];
// ... add shapes ...
prs.Save("output.pptx", SaveFormat.Pptx);Etapa 3: Adicionar um AutoShape
slide.Shapes.AddAutoShape(shapeType, x, y, width, height) coloca uma forma na posição e tamanho fornecidos (todos em pontos). Use as constantes ShapeType para selecionar a forma.
using Aspose.Slides.Foss;
using Aspose.Slides.Foss.Export;
using var prs = new Presentation();
var slide = prs.Slides[0];
// Rectangle
var rect = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 50, 50, 300, 100);
rect.AddTextFrame("Rectangle shape");
// Ellipse
var ellipse = slide.Shapes.AddAutoShape(ShapeType.Ellipse, 400, 50, 200, 100);
ellipse.AddTextFrame("Ellipse shape");
prs.Save("autoshapes.pptx", SaveFormat.Pptx);Etapa 4: Adicionar uma Tabela
slide.Shapes.AddTable(x, y, columnWidths, rowHeights) cria uma tabela na posição especificada. As larguras das colunas e as alturas das linhas são arrays de valores em pontos.
using Aspose.Slides.Foss;
using Aspose.Slides.Foss.Export;
using var prs = new Presentation();
var slide = prs.Slides[0];
var colWidths = new double[] { 150.0, 150.0, 150.0 };
var rowHeights = new double[] { 40.0, 40.0, 40.0 };
var table = slide.Shapes.AddTable(50, 200, colWidths, rowHeights);
// Set header row text
string[] headers = { "Product", "Units", "Revenue" };
for (int col = 0; col < headers.Length; col++)
table.Rows[0][col].TextFrame.Text = headers[col];
// Set data rows
string[][] rows = {
new[] { "Widget A", "120", "$2,400" },
new[] { "Widget B", "85", "$1,700" },
};
for (int rowIdx = 0; rowIdx < rows.Length; rowIdx++)
for (int col = 0; col < rows[rowIdx].Length; col++)
table.Rows[rowIdx + 1][col].TextFrame.Text = rows[rowIdx][col];
prs.Save("table.pptx", SaveFormat.Pptx);Etapa 5: Adicionar um Conector
Os conectores ligam duas formas visualmente. Crie as formas primeiro, depois adicione um conector e defina seus pontos de conexão de início e fim.
using Aspose.Slides.Foss;
using Aspose.Slides.Foss.Export;
using var prs = new Presentation();
var slide = prs.Slides[0];
var box1 = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 50, 100, 150, 60);
box1.AddTextFrame("Start");
var box2 = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 350, 100, 150, 60);
box2.AddTextFrame("End");
var conn = slide.Shapes.AddConnector(ShapeType.BentConnector3, 0, 0, 10, 10);
conn.StartShapeConnectedTo = box1;
conn.StartShapeConnectionSiteIndex = 3; // right side of box1
conn.EndShapeConnectedTo = box2;
conn.EndShapeConnectionSiteIndex = 1; // left side of box2
prs.Save("connector.pptx", SaveFormat.Pptx);Os índices dos pontos de conexão são numerados de 0 a 3 para um retângulo: topo=0, esquerda=1, base=2, direita=3.
Etapa 6: Adicionar uma Moldura de Imagem
Incorpore uma imagem e adicione-a ao slide como um PictureFrame. Leia os bytes da imagem primeiro, adicione-os à coleção de imagens da apresentação e, então, crie o frame.
using Aspose.Slides.Foss;
using Aspose.Slides.Foss.Export;
using var prs = new Presentation();
byte[] imageData = File.ReadAllBytes("logo.png");
var image = prs.Images.AddImage(imageData);
var slide = prs.Slides[0];
slide.Shapes.AddPictureFrame(
ShapeType.Rectangle, // bounding shape type
50, 50, // x, y in points
200, 150, // width, height in points
image
);
prs.Save("with-image.pptx", SaveFormat.Pptx);Problemas Comuns e Soluções
Forma aparece fora da área visível do slide
Os slides têm 720 × 540 pontos por padrão. Valores de x ou y além desses limites posicionam a forma fora do slide. Mantenha x < 720 e y < 540, e garanta x + width <= 720 e y + height <= 540.
NullReferenceException ao acessar TextFrame
AddAutoShape() retorna o objeto shape diretamente. Se você vir null, verifique se não está descartando o valor retornado.
O texto da célula da tabela está vazio após a atribuição
A propriedade correta é .TextFrame.Text (não .Text diretamente na célula). Acesse as células como table.Rows[rowIndex][colIndex].TextFrame.Text = "value".
Perguntas Frequentes
Quantas formas posso adicionar a um slide?
Não há limite imposto pela biblioteca. Limites práticos dependem do tamanho do arquivo e da capacidade de renderização do visualizador PPTX de destino.
Posso mudar a posição de uma forma após adicioná‑la?
Sim. O objeto shape retornado por AddAutoShape() tem as propriedades X, Y, Width e Height que você pode definir:
shape.X = 100;
shape.Y = 200;
shape.Width = 400;
shape.Height = 80;Posso definir a cor do contorno da forma (borda)?
Sim, via shape.LineFormat:
using Aspose.Slides.Foss.Drawing;
shape.LineFormat.FillFormat.SolidFillColor.Color = Color.FromArgb(255, 200, 0, 0);Os gráficos são suportados?
Não. Gráficos, SmartArt e objetos OLE não são implementados nesta edição.