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ục | Bên |
|---|---|
0 | Trên |
1 | Trái |
2 | Dưới |
3 | Phả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
| ShapeType | Mô tả |
|---|---|
ShapeType::BENT_CONNECTOR3 | Hai góc 90 độ (phổ biến nhất cho các sơ đồ kiểu lưu đồ) |
ShapeType::BENT_CONNECTOR2 | Một góc 90 độ |
ShapeType::BENT_CONNECTOR4 | Ba 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;
}