Como adicionar formas ao PowerPoint no .NET

Como adicionar formas ao PowerPoint no .NET

Este guia mostra como adicionar AutoShapes, Tablas, Conectores e PictureFrames a slides do PowerPoint usando Aspose.Slides FOSS para .NET. Todos os tipos de forma são adicionados através da ferramenta de configuração: slide.Shapes recolha através de métodos tais como: AddAutoShape(), AddTable(), AddConnector(), e AddPictureFrame().

Guia passo a passo

Passo 1: Instalar o pacote

Adicione o pacote NuGet ao seu projeto executando o comando dotnet CLI install:

aspose-slides-foss/slides is not yet published — build from source until it ships. See the project README for build instructions.

Verificar a instalação importando o espaço de nomes e executando um teste rápido de fumaça:

using Aspose.Slides.Foss;
Console.WriteLine("Ready");

Passo 2: Crie uma apresentação

Sempre enrolar . Presentation em um using declaração para assegurar a eliminação adequada; aceder ao primeiro slide através do prs.Slides[0] E chama-me. prs.Save() quando concluído:

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);

Passo 3: Adicionar um AutoShape

slide.Shapes.AddAutoShape(shapeType, x, y, width, height) coloca uma forma na posição e tamanho dados (todos em pontos). Use ShapeType constantes 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);

Passo 4: Adicionar uma tabela

slide.Shapes.AddTable(x, y, columnWidths, rowHeights) A largura da coluna e a altura das linhas são matrizes de valores pontuais.

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);

Passo 5: Adicionar um conector

Conectores ligam duas formas visualmente. Crie as formas primeiro, depois adicione um conector e defina seus pontos de ligação inicial e final.

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 do local de ligação são numerados 0-3 para um retângulo: cima=0, esquerda=1, baixo=2, direita=3.


Passo 6: Adicionar um quadro de imagem

Incorporar uma imagem e adicioná-la ao slide como um PictureFrame.Leia os bytes da imagem primeiro, adicione-os à coleção de imagens da apresentação e crie o quadro.

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 de deslizamento visível

Os slides são 720 x 540 pontos por padrão. x ou a) y Para além desses limites, coloque a forma fora do diapositivo. x < 720 e a) y < 540, e assegurar a sua aplicação. x + width <= 720 e a) y + height <= 540.

NullReferenceException quando acederem TextFrame

AddAutoShape() retorna o objeto de forma diretamente. Se você ver null, verifique se não está a descartar o valor de retorno.

Texto da célula de tabela está vazio após atribuição

A propriedade correta é: .TextFrame.Text (não .Text Celas de acesso como: table.Rows[rowIndex][colIndex].TextFrame.Text = "value".


Perguntas Frequentes

Quantas formas posso adicionar a um slide?

Não há limite imposto pela biblioteca. Os limites práticos dependem do tamanho do arquivo e da capacidade de renderização do seu visor PPTX alvo.

Posso mudar a posição de uma forma depois de adicioná-la?

Sim, o objeto de forma devolvido por AddAutoShape() tem X, Y, Width, e Height propriedades que pode definir:

shape.X = 100;
shape.Y = 200;
shape.Width = 400;
shape.Height = 80;

Posso definir a forma contorno (borda) cor?

Sim, através do 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.


Ver também:

 Português