Come collegare forme con connettori in Java
I connettori in Aspose.Slides FOSS sono forme lineari che si collegano ai punti di connessione su altre forme. Quando sposti una forma collegata, l’estremità del connettore si muove con essa. Il tipo di connettore più comune è BENT_CONNECTOR3, che aggira gli ostacoli con una singola piega a gomito.
Prerequisiti
<dependency>
<groupId>org.aspose.slides.foss</groupId>
<artifactId>aspose-slides-foss</artifactId>
<version>1.0.0</version>
</dependency>Indici del sito di connessione
Ogni forma ha quattro punti di connessione numerati:
| Indice | Posizione |
|---|---|
0 | Centro superiore |
1 | Centro sinistro |
2 | Centro inferiore |
3 | Centro destro |
Collega due forme
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()) {
ISlide slide = prs.getSlides().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);
}I limiti del segnaposto (0, 0, 10, 10) passati a addConnector vengono ignorati una volta impostati i punti finali della connessione; PowerPoint reindirizza il connettore alle forme collegate.
Tipi di connettore
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_CONNECTOR3Stilizza la linea di collegamento
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()) {
ISlide slide = prs.getSlides().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);
}Diagramma di flusso con più connettori
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()) {
ISlide slide = prs.getSlides().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);
}Leggi le proprietà del connettore
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() : "?"));
}
}
}