커넥터 작업 — Aspose.Slides FOSS for C++

커넥터는 두 개의 다른 도형을 선으로 시각적으로 연결하는 도형입니다. Aspose.Slides FOSS for C++는 굽은, 직선, 곡선 커넥터를 지원합니다. 도형의 연결 지점은 정수로 식별됩니다 연결 지점 인덱스.


연결 사이트 인덱스

각 도형은 네 개의 표준 연결 사이트를 제공합니다:

인덱스측면
0상단
1왼쪽
2하단
3오른쪽

두 도형 사이에 굽은 커넥터 추가하기

#include <Aspose/Slides/Foss/auto_shape.h>
#include <Aspose/Slides/Foss/connector.h>
#include <Aspose/Slides/Foss/export/save_format.h>
#include <Aspose/Slides/Foss/presentation.h>
#include <Aspose/Slides/Foss/shape_collection.h>
#include <Aspose/Slides/Foss/shape_type.h>
#include <Aspose/Slides/Foss/slide.h>
#include <Aspose/Slides/Foss/slide_collection.h>
#include <Aspose/Slides/Foss/text_frame.h>

using namespace Aspose::Slides::Foss;

int main() {
    Presentation pres;
    auto& slide = pres.slides()[0];

    // Create two shapes to connect
    auto& box1 = slide.shapes().add_auto_shape(ShapeType::RECTANGLE, 50, 150, 150, 60);
    box1.text_frame()->set_text("Start");

    auto& box2 = slide.shapes().add_auto_shape(ShapeType::RECTANGLE, 400, 150, 150, 60);
    box2.text_frame()->set_text("End");

    // Add a bent connector (position/size are ignored once connected)
    auto& conn = slide.shapes().add_connector(ShapeType::BENT_CONNECTOR3, 0, 0, 10, 10);

    // Connect right side of box1 -> left side of box2
    conn.set_start_shape_connected_to(&box1);
    conn.set_start_shape_connection_site_index(3);   // right
    conn.set_end_shape_connected_to(&box2);
    conn.set_end_shape_connection_site_index(1);     // left

    pres.save("connector.pptx", SaveFormat::PPTX);
    return 0;
}

커넥터 도형 유형

ShapeType설명
ShapeType::BENT_CONNECTOR3두 개의 90도 굽힘 (플로우차트 스타일 다이어그램에서 가장 일반적)
ShapeType::BENT_CONNECTOR2한 개의 90도 굽힘
ShapeType::BENT_CONNECTOR4세 개의 90도 굽힘
ShapeType::STRAIGHT_CONNECTOR1직접 직선
ShapeType::CURVED_CONNECTOR2단일 부드러운 곡선
ShapeType::CURVED_CONNECTOR3이중 굽힘 곡선

위에서 아래로 연결

#include <Aspose/Slides/Foss/auto_shape.h>
#include <Aspose/Slides/Foss/connector.h>
#include <Aspose/Slides/Foss/export/save_format.h>
#include <Aspose/Slides/Foss/presentation.h>
#include <Aspose/Slides/Foss/shape_collection.h>
#include <Aspose/Slides/Foss/shape_type.h>
#include <Aspose/Slides/Foss/slide.h>
#include <Aspose/Slides/Foss/slide_collection.h>
#include <Aspose/Slides/Foss/text_frame.h>

using namespace Aspose::Slides::Foss;

int main() {
    Presentation pres;
    auto& slide = pres.slides()[0];

    auto& top = slide.shapes().add_auto_shape(ShapeType::RECTANGLE, 250, 80, 200, 60);
    top.text_frame()->set_text("Decision");

    auto& bottom = slide.shapes().add_auto_shape(ShapeType::RECTANGLE, 250, 300, 200, 60);
    bottom.text_frame()->set_text("Action");

    auto& conn = slide.shapes().add_connector(ShapeType::BENT_CONNECTOR3, 0, 0, 10, 10);
    conn.set_start_shape_connected_to(&top);
    conn.set_start_shape_connection_site_index(2);    // bottom of top box
    conn.set_end_shape_connected_to(&bottom);
    conn.set_end_shape_connection_site_index(0);      // top of bottom box

    pres.save("vertical-connector.pptx", SaveFormat::PPTX);
    return 0;
}

다중 커넥터가 있는 흐름도

#include <Aspose/Slides/Foss/auto_shape.h>
#include <Aspose/Slides/Foss/connector.h>
#include <Aspose/Slides/Foss/export/save_format.h>
#include <Aspose/Slides/Foss/presentation.h>
#include <Aspose/Slides/Foss/shape_collection.h>
#include <Aspose/Slides/Foss/shape_type.h>
#include <Aspose/Slides/Foss/slide.h>
#include <Aspose/Slides/Foss/slide_collection.h>
#include <Aspose/Slides/Foss/text_frame.h>

#include <string>

using namespace Aspose::Slides::Foss;

AutoShape& add_box(Slide& slide, const std::string& text, double x, double y,
                   double w = 160, double h = 50) {
    auto& s = slide.shapes().add_auto_shape(ShapeType::RECTANGLE, x, y, w, h);
    s.text_frame()->set_text(text);
    return s;
}

void connect(Slide& slide, Shape& s1, int site1, Shape& s2, int site2) {
    auto& conn = slide.shapes().add_connector(ShapeType::BENT_CONNECTOR3, 0, 0, 10, 10);
    conn.set_start_shape_connected_to(&s1);
    conn.set_start_shape_connection_site_index(site1);
    conn.set_end_shape_connected_to(&s2);
    conn.set_end_shape_connection_site_index(site2);
}

int main() {
    Presentation pres;
    auto& slide = pres.slides()[0];

    auto& start = add_box(slide, "Start", 260, 60);
    auto& process = add_box(slide, "Process Data", 260, 180);
    auto& end = add_box(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)

    pres.save("flowchart.pptx", SaveFormat::PPTX);
    return 0;
}

또 보기

 한국어