Working with Connectors — Aspose.Slides FOSS for C++ => <<<SEG_1>>> Lập việc với các Đầu nối — Aspose.Slides FOSS cho C++

Các kết nối là các hình dạng liên kết trực quan hai hình dạng khác bằng một đường. Aspose.Slides FOSS cho C++ hỗ trợ các kết nối cong, thẳng và uốn. Các điểm kết nối trên một hình dạng được xác định bằng số nguyên chỉ mục vị trí kết nối.


Chỉ mục Site Kết nối

Mỗi hình dạng cung cấp bốn site kết nối tiêu chuẩn:

Chỉ mụcBên
0Trên
1Trái
2Dưới
3Phải

Thêm một Bent Connector giữa hai hình dạng

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

Các loại hình dạng Connector

ShapeTypeMô tả
ShapeType::BENT_CONNECTOR3Hai góc 90 độ (phổ biến nhất cho các sơ đồ kiểu lưu đồ)
ShapeType::BENT_CONNECTOR2Một góc 90 độ
ShapeType::BENT_CONNECTOR4Ba góc 90 độ
ShapeType::STRAIGHT_CONNECTOR1Đường thẳng trực tiếp
ShapeType::CURVED_CONNECTOR2Đường cong mượt đơn
ShapeType::CURVED_CONNECTOR3Đường cong gấp đôi

Kết nối từ trên xuống dưới

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

Lưu đồ với nhiều Connector

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

Xem Thêm

 Tiếng Việt