Робота з з’єднувачами — Aspose.Slides FOSS for Java

З’єднувачі — це форми, які візуально з’єднують дві інші форми лінією. Aspose.Slides FOSS для Java підтримує вигнуті, прямі та криві з’єднувачі. Точки підключення на формі ідентифікуються цілим числом індекси точок підключення.


Індекси точок підключення

Кожна фігура має чотири стандартні точки підключення:

ІндексСторона
0Верх
1Ліво
2Низ
3Право

Додавання вигнутого з’єднувача між двома фігурами

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

Типи фігур з’єднувачів

ShapeTypeОпис
ShapeType.BENT_CONNECTOR3Два 90‑градусних вигини (найчастіше використовується для діаграм у стилі блок‑схеми)
ShapeType.BENT_CONNECTOR2Один 90‑градусний вигин
ShapeType.BENT_CONNECTOR4Три 90‑градусних вигини
ShapeType.STRAIGHT_CONNECTOR1Пряма лінія
ShapeType.CURVED_CONNECTOR2Один плавний вигин
ShapeType.CURVED_CONNECTOR3Крива з подвійним вигином

З’єднання зверху вниз

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

Блок-схема з кількома з’єднувачами

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

Форматування з’єднувача

З’єднувачі підтримують те ж саме getLineFormat() властивості, як і інші форми:

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

Див. також

 Українська