Hogyan kapcsoljunk össze alakzatokat csatlakozókkal C++-ban
Aspose.Slides FOSS-ben a csatlakozók vonal alakzatok, amelyek más alakzatok kapcsolódási pontjaihoz csatlakoznak. Ha egy csatlakoztatott alakzatot mozgatod, a csatlakozó végpontja vele együtt mozog. A leggyakoribb csatlakozótípus a BENT_CONNECTOR3, amely egyetlen könyökfordulattal kerül körbe az akadályokon.
Előfeltételek
git clone https://github.com/aspose-slides-foss/Aspose.Slides-FOSS-for-Cpp.git
cd Aspose.Slides-FOSS-for-Cpp && mkdir build && cd build
cmake .. && cmake --build .Kapcsolati hely indexek
Minden alakzatnak négy számozott csatlakozási pontja van:
| Index | Pozíció |
|---|---|
0 | Felső közép |
1 | Bal közép |
2 | Alsó közép |
3 | Jobb közép |
Két alakzat összekapcsolása
#include <Aspose/Slides/Foss/presentation.h>
int main() {
namespace asf = Aspose::Slides::Foss;
asf::Presentation prs;
auto& slide = prs.slides()[0];
// Add two rectangles
auto& box1 = slide.shapes().add_auto_shape(
asf::ShapeType::RECTANGLE, 50, 200, 200, 100);
auto& box2 = slide.shapes().add_auto_shape(
asf::ShapeType::RECTANGLE, 450, 200, 200, 100);
box1.text_frame()->set_text("Start");
box2.text_frame()->set_text("End");
// Add a bent connector (initial bounds are overwritten by the connection)
auto& conn = slide.shapes().add_connector(
asf::ShapeType::BENT_CONNECTOR3, 0, 0, 10, 10);
// Connect right side of box1 (site 3) to left side of box2 (site 1)
conn.set_start_shape_connected_to(&box1);
conn.set_start_shape_connection_site_index(3);
conn.set_end_shape_connected_to(&box2);
conn.set_end_shape_connection_site_index(1);
prs.save("connected.pptx", asf::SaveFormat::PPTX);
return 0;
}A (0, 0, 10, 10) helyőrző határolói, amelyeket a add_connector-nek adunk át, figyelmen kívül maradnak, miután a csatlakozási végpontok be vannak állítva; a PowerPoint átirányítja a csatlakozót a csatolt alakzatokra.
Csatlakozó típusok
namespace asf = Aspose::Slides::Foss;
// Straight line
asf::ShapeType::STRAIGHT_CONNECTOR1;
// Single elbow (L-shape)
asf::ShapeType::BENT_CONNECTOR2;
// Double elbow (Z-shape): most common
asf::ShapeType::BENT_CONNECTOR3;
// Curved connector
asf::ShapeType::CURVED_CONNECTOR3;A csatlakozó vonal stílusának beállítása
#include <Aspose/Slides/Foss/presentation.h>
int main() {
namespace asf = Aspose::Slides::Foss;
asf::Presentation prs;
auto& slide = prs.slides()[0];
auto& box1 = slide.shapes().add_auto_shape(
asf::ShapeType::RECTANGLE, 50, 150, 180, 80);
auto& box2 = slide.shapes().add_auto_shape(
asf::ShapeType::RECTANGLE, 500, 300, 180, 80);
auto& conn = slide.shapes().add_connector(
asf::ShapeType::BENT_CONNECTOR3, 0, 0, 10, 10);
conn.set_start_shape_connected_to(&box1);
conn.set_start_shape_connection_site_index(2); // bottom of box1
conn.set_end_shape_connected_to(&box2);
conn.set_end_shape_connection_site_index(0); // top of box2
// Style: dashed blue line, 2 pt width
auto& lf = conn.line_format();
lf.set_width(2.0);
lf.fill_format().solid_fill_color().set_color(asf::Color::blue);
lf.set_dash_style(asf::LineDashStyle::DASH);
prs.save("styled-connector.pptx", asf::SaveFormat::PPTX);
return 0;
}Többkapcsolós folyamatábra
#include <Aspose/Slides/Foss/presentation.h>
int main() {
namespace asf = Aspose::Slides::Foss;
asf::Presentation prs;
auto& slide = prs.slides()[0];
// Three-step flowchart
auto& step1 = slide.shapes().add_auto_shape(
asf::ShapeType::RECTANGLE, 350, 50, 200, 70);
auto& step2 = slide.shapes().add_auto_shape(
asf::ShapeType::RECTANGLE, 350, 220, 200, 70);
auto& step3 = slide.shapes().add_auto_shape(
asf::ShapeType::RECTANGLE, 350, 390, 200, 70);
step1.text_frame()->set_text("Step 1");
step2.text_frame()->set_text("Step 2");
step3.text_frame()->set_text("Step 3");
auto connect_vertical = [&](auto& top_shape, auto& bottom_shape) {
auto& c = slide.shapes().add_connector(
asf::ShapeType::BENT_CONNECTOR3, 0, 0, 10, 10);
c.set_start_shape_connected_to(&top_shape);
c.set_start_shape_connection_site_index(2); // bottom
c.set_end_shape_connected_to(&bottom_shape);
c.set_end_shape_connection_site_index(0); // top
};
connect_vertical(step1, step2);
connect_vertical(step2, step3);
prs.save("flowchart.pptx", asf::SaveFormat::PPTX);
return 0;
}Csatlakozó tulajdonságainak olvasása
#include <Aspose/Slides/Foss/presentation.h>
#include <iostream>
int main() {
namespace asf = Aspose::Slides::Foss;
asf::Presentation prs("connected.pptx");
for (size_t i = 0; i < prs.slides()[0].shapes().size(); ++i) {
auto& shape = prs.slides()[0].shapes()[i];
if (shape.is_connector()) {
auto& connector = static_cast<asf::Connector&>(shape);
std::cout << "Connector found\n";
}
}
return 0;
}