Робота з з’єднувачами — Aspose.Slides FOSS for C++
З’єднувачі — це форми, які візуально з’єднують дві інші форми лінією. Aspose.Slides FOSS для 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;
}