Como conectar formas com conectores em Java
Este guia mostra como conectar formas em slides do PowerPoint usando Aspose.Slides FOSS para Java. Conectores são formas de linha que se ligam a locais de ligação Quando você move uma forma conectada, o ponto final do conector se move com ele. O tipo de conectores mais comum é o conecto da linha que liga a linha e faz com que ela seja movida para um outro lado. BENT_CONNECTOR3, que percorre os obstáculos com uma única curva de cotovelo.
Precondições
Adicione a seguinte dependência ao seu pom.xml para incluir a biblioteca FOSS Aspose.Slides:
<dependency>
<groupId>org.aspose</groupId>
<artifactId>aspose-slides-foss</artifactId>
<version>26.7.0</version>
</dependency>Índices de sites de conexão
Cada forma tem quatro locais de ligação numerados:
| Índice de preços | Posição: |
|---|---|
0 | Centro superior |
1 | Centro esquerdo |
2 | Centro inferior |
3 | Centro direito. |
Conectar duas formas
Criar as duas formas, adicionar um conector com slide.getShapes().addConnector(),Então , liga-me . setStartShapeConnectedTo() e a) setEndShapeConnectedTo() para as ligar:
import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IShape;
import org.aspose.slides.foss.IAutoShape;
import org.aspose.slides.foss.IConnector;
import org.aspose.slides.foss.ILineFormat;
import org.aspose.slides.foss.Connector;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.export.SaveFormat;
import org.aspose.slides.foss.drawing.Color;
try (Presentation prs = new Presentation()) {
ISlideCollection slides = prs.getSlides();
ISlide slide = slides.get(0);
// Add two rectangles
IAutoShape box1 = slide.getShapes().addAutoShape(
ShapeType.RECTANGLE, 50, 200, 200, 100
);
IAutoShape box2 = slide.getShapes().addAutoShape(
ShapeType.RECTANGLE, 450, 200, 200, 100
);
box1.addTextFrame("Start");
box2.addTextFrame("End");
// Add a bent connector (initial bounds are overwritten by the connection)
IConnector conn = slide.getShapes().addConnector(
ShapeType.BENT_CONNECTOR3, 0, 0, 10, 10
);
// Connect right side of box1 (site 3) to left side of box2 (site 1)
conn.setStartShapeConnectedTo(box1);
conn.setStartShapeConnectionSiteIndex(3);
conn.setEndShapeConnectedTo(box2);
conn.setEndShapeConnectionSiteIndex(1);
prs.save("connected.pptx", SaveFormat.PPTX);
}Limitação do marcador de lugar (0, 0, 10, 10) Passado para: addConnector são ignorados uma vez que os pontos finais de conexão estão definidos; PowerPoint reencaminha o conector para as formas anexadas.
Tipos de conectores
Utilização: ShapeType Opções comuns incluem linhas retas, conectores de cotovelo único e duplo:
import org.aspose.slides.foss.ShapeType;
// Straight line
ShapeType.STRAIGHT_CONNECTOR1
// Single elbow (L-shape)
ShapeType.BENT_CONNECTOR2
// Double elbow (Z-shape): most common
ShapeType.BENT_CONNECTOR3
// Curved connector
ShapeType.CURVED_CONNECTOR3Estilo da linha de conector
Configurar a linha do conector cor, largura e estilo de guião via conn.getLineFormat() Após a criação do conector:
import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IShape;
import org.aspose.slides.foss.IAutoShape;
import org.aspose.slides.foss.IConnector;
import org.aspose.slides.foss.ILineFormat;
import org.aspose.slides.foss.Connector;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.export.SaveFormat;
import org.aspose.slides.foss.drawing.Color;
try (Presentation prs = new Presentation()) {
ISlideCollection slides = prs.getSlides();
ISlide slide = slides.get(0);
IAutoShape box1 = slide.getShapes().addAutoShape(
ShapeType.RECTANGLE, 50, 150, 180, 80
);
IAutoShape box2 = slide.getShapes().addAutoShape(
ShapeType.RECTANGLE, 500, 300, 180, 80
);
IConnector conn = slide.getShapes().addConnector(
ShapeType.BENT_CONNECTOR3, 0, 0, 10, 10
);
conn.setStartShapeConnectedTo(box1);
conn.setStartShapeConnectionSiteIndex(2); // bottom of box1
conn.setEndShapeConnectedTo(box2);
conn.setEndShapeConnectionSiteIndex(0); // top of box2
// Style: 2 pt width, blue color
ILineFormat lf = conn.getLineFormat();
lf.setWidth(2.0);
lf.getFillFormat().getSolidFillColor().setColor(
Color.fromArgb(255, 0, 0, 255)
);
prs.save("styled-connector.pptx", SaveFormat.PPTX);
}Diagrama de fluxo com múltiplos conectores
Construir um diagrama de fluxo em várias etapas, criando vários formatos e adicionando um conector entre cada par de passos consecutivos:
import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IShape;
import org.aspose.slides.foss.IAutoShape;
import org.aspose.slides.foss.IConnector;
import org.aspose.slides.foss.ILineFormat;
import org.aspose.slides.foss.Connector;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.export.SaveFormat;
import org.aspose.slides.foss.drawing.Color;
try (Presentation prs = new Presentation()) {
ISlideCollection slides = prs.getSlides();
ISlide slide = slides.get(0);
// Three-step flowchart
IAutoShape step1 = slide.getShapes().addAutoShape(
ShapeType.RECTANGLE, 350, 50, 200, 70
);
IAutoShape step2 = slide.getShapes().addAutoShape(
ShapeType.RECTANGLE, 350, 220, 200, 70
);
IAutoShape step3 = slide.getShapes().addAutoShape(
ShapeType.RECTANGLE, 350, 390, 200, 70
);
step1.addTextFrame("Step 1");
step2.addTextFrame("Step 2");
step3.addTextFrame("Step 3");
// Connect step1 -> step2
IConnector conn1 = slide.getShapes().addConnector(
ShapeType.BENT_CONNECTOR3, 0, 0, 10, 10
);
conn1.setStartShapeConnectedTo(step1);
conn1.setStartShapeConnectionSiteIndex(2); // bottom
conn1.setEndShapeConnectedTo(step2);
conn1.setEndShapeConnectionSiteIndex(0); // top
// Connect step2 -> step3
IConnector conn2 = slide.getShapes().addConnector(
ShapeType.BENT_CONNECTOR3, 0, 0, 10, 10
);
conn2.setStartShapeConnectedTo(step2);
conn2.setStartShapeConnectionSiteIndex(2);
conn2.setEndShapeConnectedTo(step3);
conn2.setEndShapeConnectionSiteIndex(0);
prs.save("flowchart.pptx", SaveFormat.PPTX);
}Leia Propriedades do Conector
Carregar uma apresentação existente e inspecionar cada conector de início e final forma conexões por moldar formas para IConnector:
import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IShape;
import org.aspose.slides.foss.IAutoShape;
import org.aspose.slides.foss.IConnector;
import org.aspose.slides.foss.ILineFormat;
import org.aspose.slides.foss.Connector;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.export.SaveFormat;
import org.aspose.slides.foss.drawing.Color;
try (Presentation prs = new Presentation("connected.pptx")) {
for (IShape shape : prs.getSlides().get(0).getShapes()) {
if (shape instanceof Connector) {
IConnector conn = (IConnector) shape;
IShape start = conn.getStartShapeConnectedTo();
IShape end = conn.getEndShapeConnectedTo();
System.out.println("Connector: "
+ (start != null ? start.getName() : "?")
+ " -> "
+ (end != null ? end.getName() : "?"));
}
}
}