Trabalhando com Conectores — Aspose.Slides FOSS for Java

Conectores são formas que ligam visualmente duas outras formas com uma linha. Aspose.Slides FOSS para Java suporta conectores dobrados, retos e curvos. Os pontos de conexão em uma forma são identificados por inteiro índices de locais de conexão.


Índices de Pontos de Conexão

Cada forma expõe quatro pontos de conexão padrão:

ÍndiceLado
0Topo
1Esquerda
2Inferior
3Direita

Adicionando um Conector Dobrado Entre Duas Formas

import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.export.SaveFormat;

try (Presentation prs = new Presentation()) {
    var slide = prs.getSlides().get(0);

    // Create two shapes to connect
    var box1 = slide.getShapes().addAutoShape(ShapeType.RECTANGLE, 50, 150, 150, 60);
    box1.addTextFrame("Start");

    var box2 = slide.getShapes().addAutoShape(ShapeType.RECTANGLE, 400, 150, 150, 60);
    box2.addTextFrame("End");

    // Add a bent connector (position/size are ignored once connected)
    var conn = slide.getShapes().addConnector(ShapeType.BENT_CONNECTOR3, 0, 0, 10, 10);

    // Connect right side of box1 to left side of box2
    conn.setStartShapeConnectedTo(box1);
    conn.setStartShapeConnectionSiteIndex(3);   // right
    conn.setEndShapeConnectedTo(box2);
    conn.setEndShapeConnectionSiteIndex(1);     // left

    prs.save("connector.pptx", SaveFormat.PPTX);
}

Tipos de Formas de Conector

ShapeTypeDescrição
ShapeType.BENT_CONNECTOR3Duas curvas de 90 graus (as mais comuns em diagramas estilo fluxograma)
ShapeType.BENT_CONNECTOR2Uma curva de 90 graus
ShapeType.BENT_CONNECTOR4Três curvas de 90 graus
ShapeType.STRAIGHT_CONNECTOR1Linha reta direta
ShapeType.CURVED_CONNECTOR2Curva lisa única
ShapeType.CURVED_CONNECTOR3Curva de duas dobras

Conexão de Cima para Baixo

import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.export.SaveFormat;

try (Presentation prs = new Presentation()) {
    var slide = prs.getSlides().get(0);

    var top = slide.getShapes().addAutoShape(ShapeType.RECTANGLE, 250, 80, 200, 60);
    top.addTextFrame("Decision");

    var bottom = slide.getShapes().addAutoShape(ShapeType.RECTANGLE, 250, 300, 200, 60);
    bottom.addTextFrame("Action");

    var conn = slide.getShapes().addConnector(ShapeType.BENT_CONNECTOR3, 0, 0, 10, 10);
    conn.setStartShapeConnectedTo(top);
    conn.setStartShapeConnectionSiteIndex(2);    // bottom of top box
    conn.setEndShapeConnectedTo(bottom);
    conn.setEndShapeConnectionSiteIndex(0);      // top of bottom box

    prs.save("vertical-connector.pptx", SaveFormat.PPTX);
}

Fluxograma com Múltiplos Conectores

import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.export.SaveFormat;
import org.aspose.slides.foss.IAutoShape;
import org.aspose.slides.foss.ISlide;

try (Presentation prs = new Presentation()) {
    var slide = prs.getSlides().get(0);

    var start = addBox(slide, "Start", 260, 60);
    var process = addBox(slide, "Process Data", 260, 180);
    var end = addBox(slide, "End", 260, 300);

    connect(slide, start, 2, process, 0);    // start -> process (bottom to top)
    connect(slide, process, 2, end, 0);      // process -> end (bottom to top)

    prs.save("flowchart.pptx", SaveFormat.PPTX);
}

static IAutoShape addBox(ISlide slide, String text, float x, float y) {
    var s = slide.getShapes().addAutoShape(ShapeType.RECTANGLE, x, y, 160, 50);
    s.addTextFrame(text);
    return s;
}

static void connect(ISlide slide, IAutoShape s1, int site1, IAutoShape s2, int site2) {
    var conn = slide.getShapes().addConnector(ShapeType.BENT_CONNECTOR3, 0, 0, 10, 10);
    conn.setStartShapeConnectedTo(s1);
    conn.setStartShapeConnectionSiteIndex(site1);
    conn.setEndShapeConnectedTo(s2);
    conn.setEndShapeConnectionSiteIndex(site2);
}

Formatando um Conector

Os conectores suportam o mesmo getLineFormat() propriedades como outras formas:

import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.LineDashStyle;
import org.aspose.slides.foss.drawing.Color;
import org.aspose.slides.foss.export.SaveFormat;

try (Presentation prs = new Presentation()) {
    var slide = prs.getSlides().get(0);
    var box1 = slide.getShapes().addAutoShape(ShapeType.RECTANGLE, 50, 150, 150, 60);
    var box2 = slide.getShapes().addAutoShape(ShapeType.RECTANGLE, 400, 150, 150, 60);

    var conn = slide.getShapes().addConnector(ShapeType.BENT_CONNECTOR3, 0, 0, 10, 10);
    conn.setStartShapeConnectedTo(box1);
    conn.setStartShapeConnectionSiteIndex(3);
    conn.setEndShapeConnectedTo(box2);
    conn.setEndShapeConnectionSiteIndex(1);

    // Style the connector line
    conn.getLineFormat().setWidth(2.5);
    conn.getLineFormat().setDashStyle(LineDashStyle.DASH);
    conn.getLineFormat().getFillFormat().getSolidFillColor().setColor(Color.fromArgb(0, 0, 139));

    prs.save("styled-connector.pptx", SaveFormat.PPTX);
}

Veja Também

 Português