Formatar Formas do PowerPoint em Java

Introdução

No PowerPoint, você pode adicionar formas aos slides. Como as formas são compostas por linhas, é possível formatá‑las modificando ou aplicando efeitos aos seus contornos. Além disso, você pode formatar formas especificando configurações que controlam como seus interiores são preenchidos.

format-shape-powerpoint

Aspose.Slides for Java fornece interfaces e métodos que permitem formatar formas usando as mesmas opções disponíveis no PowerPoint.

Formatar Linhas

Usando Aspose.Slides, você pode especificar um estilo de linha personalizado para uma forma. Os passos a seguir descrevem o procedimento:

  1. Crie uma instância da classe Presentation.
  2. Obtenha uma referência a um slide pelo índice.
  3. Adicione um IAutoShape ao slide.
  4. Defina o line style da forma.
  5. Defina a espessura da linha.
  6. Defina o dash style da linha.
  7. Defina a cor da linha para a forma.
  8. Salve a apresentação modificada como um arquivo PPTX.

O código a seguir demonstra como formatar um AutoShape retangular:

// Instancie a classe Presentation que representa um arquivo de apresentação.
Presentation presentation = new Presentation();
try {
    // Obtenha o primeiro slide.
    ISlide slide = presentation.getSlides().get_Item(0);

    // Adicione uma forma automática do tipo Rectangle.
    IAutoShape shape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 50, 150, 150, 75);

    // Defina a cor de preenchimento para a forma retângulo.
    shape.getFillFormat().setFillType(FillType.NoFill);

    // Aplique formatação às linhas do retângulo.
    shape.getLineFormat().setStyle(LineStyle.ThickThin);
    shape.getLineFormat().setWidth(7);
    shape.getLineFormat().setDashStyle(LineDashStyle.Dash);

    // Defina a cor da linha do retângulo.
    shape.getLineFormat().getFillFormat().setFillType(FillType.Solid);
    shape.getLineFormat().getFillFormat().getSolidFillColor().setColor(Color.BLUE);

    // Salve o arquivo PPTX no disco.
    presentation.save("formatted_lines.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

O resultado:

As linhas formatadas na apresentação

Formatar Estilos de Junção

Aqui estão as três opções de tipo de junção:

  • Round
  • Miter
  • Bevel

Por padrão, quando o PowerPoint une duas linhas em um ângulo (como no canto de uma forma), ele usa a configuração Round. No entanto, se você estiver desenhando uma forma com ângulos agudos, pode preferir a opção Miter.

O estilo de junção na apresentação

O código Java a seguir demonstra como três retângulos (conforme a imagem acima) foram criados usando as configurações de tipo de junção Miter, Bevel e Round:

// Instancie a classe Presentation que representa um arquivo de apresentação.
Presentation presentation = new Presentation();
try {
    // Obtenha o primeiro slide.
    ISlide slide = presentation.getSlides().get_Item(0);

    // Adicione três formas automáticas do tipo Rectangle.
    IAutoShape shape1 = slide.getShapes().addAutoShape(ShapeType.Rectangle, 20, 20, 150, 75);
    IAutoShape shape2 = slide.getShapes().addAutoShape(ShapeType.Rectangle, 210, 20, 150, 75);
    IAutoShape shape3 = slide.getShapes().addAutoShape(ShapeType.Rectangle, 20, 135, 150, 75);

    // Defina a cor de preenchimento para cada forma retângulo.
    shape1.getFillFormat().setFillType(FillType.Solid);
    shape1.getFillFormat().getSolidFillColor().setColor(Color.BLACK);
    shape2.getFillFormat().setFillType(FillType.Solid);
    shape2.getFillFormat().getSolidFillColor().setColor(Color.BLACK);
    shape3.getFillFormat().setFillType(FillType.Solid);
    shape3.getFillFormat().getSolidFillColor().setColor(Color.BLACK);

    // Defina a espessura da linha.
    shape1.getLineFormat().setWidth(15);
    shape2.getLineFormat().setWidth(15);
    shape3.getLineFormat().setWidth(15);

    // Defina a cor da linha de cada retângulo.
    shape1.getLineFormat().getFillFormat().setFillType(FillType.Solid);
    shape1.getLineFormat().getFillFormat().getSolidFillColor().setColor(Color.BLUE);
    shape2.getLineFormat().getFillFormat().setFillType(FillType.Solid);
    shape2.getLineFormat().getFillFormat().getSolidFillColor().setColor(Color.BLUE);
    shape3.getLineFormat().getFillFormat().setFillType(FillType.Solid);
    shape3.getLineFormat().getFillFormat().getSolidFillColor().setColor(Color.BLUE);

    // Defina o estilo de junção.
    shape1.getLineFormat().setJoinStyle(LineJoinStyle.Miter);
    shape2.getLineFormat().setJoinStyle(LineJoinStyle.Bevel);
    shape3.getLineFormat().setJoinStyle(LineJoinStyle.Round);

    // Adicione texto a cada retângulo.
    shape1.getTextFrame().setText("Miter Join Style");
    shape2.getTextFrame().setText("Bevel Join Style");
    shape3.getTextFrame().setText("Round Join Style");

    // Salve o arquivo PPTX no disco.
    presentation.save("join_styles.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Preenchimento em Gradiente

No PowerPoint, Preenchimento em Gradiente é uma opção de formatação que permite aplicar uma transição contínua de cores a uma forma. Por exemplo, você pode aplicar duas ou mais cores de modo que uma se funde gradualmente na outra.

Veja como aplicar um preenchimento em gradiente a uma forma usando Aspose.Slides:

  1. Crie uma instância da classe Presentation.
  2. Obtenha uma referência a um slide pelo índice.
  3. Adicione um IAutoShape ao slide.
  4. Defina o FillType da forma como Gradient.
  5. Adicione suas duas cores preferidas com posições definidas usando os métodos add da coleção de paradas de gradiente exposta pela interface IGradientFormat.
  6. Salve a apresentação modificada como um arquivo PPTX.

O código Java a seguir demonstra como aplicar um efeito de preenchimento em gradiente a uma elipse:

// Instancie a classe Presentation que representa um arquivo de apresentação.
Presentation presentation = new Presentation();
try {
    // Obtenha o primeiro slide.
    ISlide slide = presentation.getSlides().get_Item(0);

    // Adicione uma forma automática do tipo Ellipse.
    IAutoShape shape = slide.getShapes().addAutoShape(ShapeType.Ellipse, 50, 50, 150, 75);

    // Aplique formatação em gradiente à elipse.
    shape.getFillFormat().setFillType(FillType.Gradient);
    shape.getFillFormat().getGradientFormat().setGradientShape(GradientShape.Linear);

    // Defina a direção do gradiente.
    shape.getFillFormat().getGradientFormat().setGradientDirection(GradientDirection.FromCorner2);

    // Adicione duas paradas de gradiente.
    shape.getFillFormat().getGradientFormat().getGradientStops().addPresetColor((float)1.0, PresetColor.Purple);
    shape.getFillFormat().getGradientFormat().getGradientStops().addPresetColor((float)0, PresetColor.Red);

    // Salve o arquivo PPTX no disco.
    presentation.save("gradient_fill.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

O resultado:

A elipse com preenchimento em gradiente

Preenchimento de Padrão

No PowerPoint, Preenchimento de Padrão é uma opção de formatação que permite aplicar um desenho de duas cores — como pontos, listras, cruzaduras ou quadriculados — a uma forma. Você pode escolher cores personalizadas para o primeiro plano e o plano de fundo do padrão.

Aspose.Slides oferece mais de 45 estilos de padrão predefinidos que podem ser aplicados a formas para melhorar o apelo visual das suas apresentações. Mesmo após selecionar um padrão predefinido, ainda é possível especificar as cores exatas que ele deve usar.

Veja como aplicar um preenchimento de padrão a uma forma usando Aspose.Slides:

  1. Crie uma instância da classe Presentation.
  2. Obtenha uma referência a um slide pelo índice.
  3. Adicione um IAutoShape ao slide.
  4. Defina o FillType da forma como Pattern.
  5. Escolha um estilo de padrão entre as opções predefinidas.
  6. Defina a Background Color do padrão.
  7. Defina a Foreground Color do padrão.
  8. Salve a apresentação modificada como um arquivo PPTX.

O código Java a seguir demonstra como aplicar um preenchimento de padrão a um retângulo:

// Instancie a classe Presentation que representa um arquivo de apresentação.
Presentation presentation = new Presentation();
try {
    // Obtenha o primeiro slide.
    ISlide slide = presentation.getSlides().get_Item(0);

    // Adicione uma forma automática do tipo Rectangle.
    IAutoShape shape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 50, 50, 150, 75);

    // Defina o tipo de preenchimento como Pattern.
    shape.getFillFormat().setFillType(FillType.Pattern);

    // Defina o estilo do padrão.
    shape.getFillFormat().getPatternFormat().setPatternStyle(PatternStyle.Trellis);

    // Defina as cores de fundo e de primeiro plano do padrão.
    shape.getFillFormat().getPatternFormat().getBackColor().setColor(Color.LIGHT_GRAY);
    shape.getFillFormat().getPatternFormat().getForeColor().setColor(Color.YELLOW);

    // Salve o arquivo PPTX no disco.
    presentation.save("pattern_fill.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

O resultado:

O retângulo com preenchimento de padrão

Preenchimento de Imagem

No PowerPoint, Preenchimento de Imagem é uma opção de formatação que permite inserir uma imagem dentro de uma forma — efetivamente usando a imagem como plano de fundo da forma.

Veja como usar Aspose.Slides para aplicar um preenchimento de imagem a uma forma:

  1. Crie uma instância da classe Presentation.
  2. Obtenha uma referência a um slide pelo índice.
  3. Adicione um IAutoShape ao slide.
  4. Defina o FillType da forma como Picture.
  5. Defina o modo de preenchimento de imagem como Tile (ou outro modo preferido).
  6. Crie um objeto IPPImage a partir da imagem que deseja usar.
  7. Passe a imagem para o método ISlidesPicture.setImage.
  8. Salve a apresentação modificada como um arquivo PPTX.

Suponha que tenhamos um arquivo “lotus.png” com a seguinte imagem:

A imagem da flor de lótus

O código Java a seguir demonstra como preencher uma forma com a imagem:

// Instancie a classe Presentation que representa um arquivo de apresentação.
Presentation presentation = new Presentation();
try {
    // Obtenha o primeiro slide.
    ISlide slide = presentation.getSlides().get_Item(0);

    // Adicione uma forma automática do tipo Rectangle.
    IAutoShape shape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 50, 50, 255, 130);
    
    // Defina o tipo de preenchimento como Picture.
    shape.getFillFormat().setFillType(FillType.Picture);

    // Defina o modo de preenchimento de imagem.
    shape.getFillFormat().getPictureFillFormat().setPictureFillMode(PictureFillMode.Tile);

    // Carregue uma imagem e adicione-a aos recursos da apresentação.
    IImage image = Images.fromFile("lotus.png");
    IPPImage picture = presentation.getImages().addImage(image);
    image.dispose();

    // Defina a imagem.
    shape.getFillFormat().getPictureFillFormat().getPicture().setImage(picture);

    // Salve o arquivo PPTX no disco.
    presentation.save("picture_fill.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

O resultado:

A forma com preenchimento de imagem

Imagem em Tile como Textura

Se você quiser definir uma imagem em tile como textura e personalizar o comportamento de repetição, pode usar os seguintes métodos da interface IPictureFillFormat e da classe PictureFillFormat:

  • setPictureFillMode: Define o modo de preenchimento de imagem — Tile ou Stretch.
  • setTileAlignment: Especifica o alinhamento dos tiles dentro da forma.
  • setTileFlip: Controla se o tile é invertido horizontalmente, verticalmente ou em ambas as direções.
  • setTileOffsetX: Define o deslocamento horizontal do tile (em pontos) a partir da origem da forma.
  • setTileOffsetY: Define o deslocamento vertical do tile (em pontos) a partir da origem da forma.
  • setTileScaleX: Define a escala horizontal do tile como porcentagem.
  • setTileScaleY: Define a escala vertical do tile como porcentagem.

O exemplo de código a seguir mostra como adicionar uma forma retangular com preenchimento de imagem em tile e configurar as opções de tile:

// Instancie a classe Presentation que representa um arquivo de apresentação.
Presentation presentation = new Presentation();
try {
    // Obtenha o primeiro slide.
    ISlide firstSlide = presentation.getSlides().get_Item(0);

    // Adicione uma forma automática de retângulo.
    IAutoShape shape = firstSlide.getShapes().addAutoShape(ShapeType.Rectangle, 50, 50, 190, 95);

    // Defina o tipo de preenchimento da forma como Picture.
    shape.getFillFormat().setFillType(FillType.Picture);

    // Carregue a imagem e adicione-a aos recursos da apresentação.
    IImage sourceImage = Images.fromFile("lotus.png");
    IPPImage presentationImage = presentation.getImages().addImage(sourceImage);
    sourceImage.dispose();

    // Atribua a imagem à forma.
    IPictureFillFormat pictureFillFormat = shape.getFillFormat().getPictureFillFormat();
    pictureFillFormat.getPicture().setImage(presentationImage);

    // Configure o modo de preenchimento de imagem e as propriedades de tiling.
    pictureFillFormat.setPictureFillMode(PictureFillMode.Tile);
    pictureFillFormat.setTileOffsetX(-32);
    pictureFillFormat.setTileOffsetY(-32);
    pictureFillFormat.setTileScaleX(50);
    pictureFillFormat.setTileScaleY(50);
    pictureFillFormat.setTileAlignment(RectangleAlignment.BottomRight);
    pictureFillFormat.setTileFlip(TileFlip.FlipBoth);

    // Salve o arquivo PPTX no disco.
    presentation.save("tile.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

O resultado:

As opções de tile

Preenchimento com Cor Sólida

No PowerPoint, Preenchimento com Cor Sólida é uma opção de formatação que preenche uma forma com uma única cor uniforme. Essa cor de fundo simples é aplicada sem gradientes, texturas ou padrões.

Para aplicar um preenchimento com cor sólida a uma forma usando Aspose.Slides, siga estas etapas:

  1. Crie uma instância da classe Presentation.
  2. Obtenha uma referência a um slide pelo índice.
  3. Adicione um IAutoShape ao slide.
  4. Defina o FillType da forma como Solid.
  5. Atribua a cor de preenchimento desejada à forma.
  6. Salve a apresentação modificada como um arquivo PPTX.

O código Java a seguir demonstra como aplicar um preenchimento com cor sólida a um retângulo em um slide PowerPoint:

// Instancie a classe Presentation que representa um arquivo de apresentação.
Presentation presentation = new Presentation();
try {
    // Obtenha o primeiro slide.
    ISlide slide = presentation.getSlides().get_Item(0);

    // Adicione uma forma automática do tipo Rectangle.
    IAutoShape shape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 50, 50, 150, 75);

    // Defina o tipo de preenchimento como Solid.
    shape.getFillFormat().setFillType(FillType.Solid);

    // Defina a cor de preenchimento.
    shape.getFillFormat().getSolidFillColor().setColor(Color.YELLOW);

    // Salve o arquivo PPTX no disco.
    presentation.save("solid_color_fill.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

O resultado:

A forma com preenchimento de cor sólida

Definir Transparência

No PowerPoint, ao aplicar um preenchimento sólido, em gradiente, imagem ou textura a formas, você também pode definir um nível de transparência para controlar a opacidade do preenchimento. Um valor de transparência mais alto torna a forma mais translúcida, permitindo que o plano de fundo ou objetos subjacentes fiquem parcialmente visíveis.

Aspose.Slides permite definir o nível de transparência ajustando o valor alfa na cor usada para o preenchimento. Veja como fazer isso:

  1. Crie uma instância da classe Presentation.
  2. Obtenha uma referência a um slide pelo índice.
  3. Adicione um IAutoShape ao slide.
  4. Defina o FillType como Solid.
  5. Use Color para definir uma cor com transparência (o componente alpha controla a transparência).
  6. Salve a apresentação.

O código Java a seguir demonstra como aplicar uma cor de preenchimento transparente a um retângulo:

// Instancie a classe Presentation que representa um arquivo de apresentação.
Presentation presentation = new Presentation();
try {
    // Obtenha o primeiro slide.
    ISlide slide = presentation.getSlides().get_Item(0);

    // Adicione uma forma automática de retângulo sólido.
    IAutoShape solidShape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 50, 50, 150, 75);

    // Adicione uma forma automática de retângulo transparente sobre a forma sólida.
    IAutoShape transparentShape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 80, 80, 150, 75);
    transparentShape.getFillFormat().setFillType(FillType.Solid);
    transparentShape.getFillFormat().getSolidFillColor().setColor(new Color(255, 255, 0, 204));

    // Salve o arquivo PPTX no disco.
    presentation.save("shape_transparency.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

O resultado:

A forma transparente

Girar Formas

Aspose.Slides permite girar formas em apresentações PowerPoint. Isso pode ser útil ao posicionar elementos visuais com requisitos específicos de alinhamento ou design.

Para girar uma forma em um slide, siga estas etapas:

  1. Crie uma instância da classe Presentation.
  2. Obtenha uma referência a um slide pelo índice.
  3. Adicione um IAutoShape ao slide.
  4. Defina a propriedade de rotação da forma para o ângulo desejado.
  5. Salve a apresentação.

O código Java a seguir demonstra como girar uma forma em 5 graus:

// Instancie a classe Presentation que representa um arquivo de apresentação.
Presentation presentation = new Presentation();
try {
    // Obtenha o primeiro slide.
    ISlide slide = presentation.getSlides().get_Item(0);

    // Adicione uma forma automática do tipo Rectangle.
    IAutoShape shape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 50, 50, 150, 75);

    // Gire a forma em 5 graus.
    shape.setRotation(5);

    // Salve o arquivo PPTX no disco.
    presentation.save("shape_rotation.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

O resultado:

A rotação da forma

Adicionar Efeitos de Chanfro 3D

Aspose.Slides permite aplicar efeitos de chanfro 3D a formas configurando suas propriedades ThreeDFormat.

Para adicionar efeitos de chanfro 3D a uma forma, siga estas etapas:

  1. Instancie a classe Presentation.
  2. Obtenha uma referência a um slide pelo índice.
  3. Adicione um IAutoShape ao slide.
  4. Configure o ThreeDFormat da forma para definir as configurações de chanfro.
  5. Salve a apresentação.

O código Java a seguir mostra como aplicar efeitos de chanfro 3D a uma forma:

// Crie uma instância da classe Presentation.
Presentation presentation = new Presentation();
try {
    ISlide slide = presentation.getSlides().get_Item(0);

    // Adicione uma forma ao slide.
    IAutoShape shape = slide.getShapes().addAutoShape(ShapeType.Ellipse, 50, 50, 100, 100);
    shape.getFillFormat().setFillType(FillType.Solid);
    shape.getFillFormat().getSolidFillColor().setColor(Color.GREEN);
    shape.getLineFormat().getFillFormat().setFillType(FillType.Solid);
    shape.getLineFormat().getFillFormat().getSolidFillColor().setColor(Color.ORANGE);
    shape.getLineFormat().setWidth(2.0);

    // Defina as propriedades ThreeDFormat da forma.
    shape.getThreeDFormat().setDepth(4);
    shape.getThreeDFormat().getBevelTop().setBevelType(BevelPresetType.Circle);
    shape.getThreeDFormat().getBevelTop().setHeight(6);
    shape.getThreeDFormat().getBevelTop().setWidth(6);
    shape.getThreeDFormat().getCamera().setCameraType(CameraPresetType.OrthographicFront);
    shape.getThreeDFormat().getLightRig().setLightType(LightRigPresetType.ThreePt);
    shape.getThreeDFormat().getLightRig().setDirection(LightingDirection.Top);

    // Salve a apresentação como um arquivo PPTX.
    presentation.save("3D_bevel_effect.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

O resultado:

O efeito de chanfro 3D

Adicionar Efeitos de Rotação 3D

Aspose.Slides permite aplicar efeitos de rotação 3D a formas configurando suas propriedades ThreeDFormat.

Para aplicar rotação 3D a uma forma:

  1. Crie uma instância da classe Presentation.
  2. Obtenha uma referência a um slide pelo índice.
  3. Adicione um IAutoShape ao slide.
  4. Use setCameraType e setLightType para definir a rotação 3D.
  5. Salve a apresentação.

O código Java a seguir demonstra como aplicar efeitos de rotação 3D a uma forma:

// Crie uma instância da classe Presentation.
Presentation presentation = new Presentation();
try {
    ISlide slide = presentation.getSlides().get_Item(0);

    IAutoShape autoShape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 50, 50, 150, 75);
    autoShape.getTextFrame().setText("Hello, Aspose!");

    autoShape.getThreeDFormat().setDepth(6);
    autoShape.getThreeDFormat().getCamera().setRotation(40, 35, 20);
    autoShape.getThreeDFormat().getCamera().setCameraType(CameraPresetType.IsometricLeftUp);
    autoShape.getThreeDFormat().getLightRig().setLightType(LightRigPresetType.Balanced);

    // Salve a apresentação como um arquivo PPTX.
    presentation.save("3D_rotation_effect.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

O resultado:

O efeito de rotação 3D

Redefinir Formatação

O código Java a seguir mostra como redefinir a formatação de um slide e restaurar a posição, tamanho e formatação de todas as formas com marcadores de posição no LayoutSlide para suas configurações padrão:

Presentation presentation = new Presentation("sample.pptx");
try {
    for (ISlide slide : presentation.getSlides()) {
        // Redefina cada forma no slide que possui um placeholder no layout.
        slide.reset();
    }
    presentation.save("reset_formatting.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

FAQ

A formatação de forma afeta o tamanho final do arquivo de apresentação?

Apenas de forma mínima. Imagens e mídias incorporadas ocupam a maior parte do espaço do arquivo, enquanto parâmetros de forma como cores, efeitos e gradientes são armazenados como metadados e praticamente não aumentam o tamanho.

Como posso detectar formas em um slide que compartilham formatação idêntica para agrupá‑las?

Compare as principais propriedades de formatação de cada forma — preenchimento, linha e configurações de efeito. Se todos os valores correspondentes coincidirem, trate seus estilos como idênticos e agrupe logicamente essas formas, o que simplifica o gerenciamento de estilos posteriormente.

Posso salvar um conjunto de estilos de forma personalizados em um arquivo separado para reutilização em outras apresentações?

Sim. Armazene formas de exemplo com os estilos desejados em um slide‑modelo ou em um arquivo .POTX de modelo. Ao criar uma nova apresentação, abra o modelo, clone as formas estilizadas que precisar e reaplique sua formatação onde for necessário.