Trabalhar com conectores Aspose.Slides FOSS para C++

Este guia mostra como adicionar e configurar conectores entre formas em apresentações do PowerPoint usando Aspose.Slides FOSS para C++. Os conecteurs são formas que ligam visualmente duas outras formas com uma linha. A biblioteca suporta conectors curvos, retos e dobrados. Os pontos de conexão em uma forma são identificados por inteiros. Índices de locais de ligação.


Índices de sites de conexão

Cada forma expõe quatro locais de ligação padrão:

Índice de preçosLado
0Top (em inglês)
1À esquerda.
2Fonte:
3- Certo.

Adicionando um conector dobrado entre duas formas

Chama-me . slide.shapes().add_connector() com um ShapeType, então definido . set_start_shape_connected_to() e a) set_end_shape_connected_to() com índices de locais de ligação para o fio de duas formas, com um conector dobrado:

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

Tipos de forma do conector

ShapeTypeDescrição:
ShapeType::BENT_CONNECTOR3Duas curvas de 90 graus (mais comuns para diagramas em estilo gráfico de fluxo)
ShapeType::BENT_CONNECTOR2Uma curva de 90 graus.
ShapeType::BENT_CONNECTOR4Três curvas de 90 graus.
ShapeType::STRAIGHT_CONNECTOR1Linha reta direta
ShapeType::CURVED_CONNECTOR2Curva lisa única
ShapeType::CURVED_CONNECTOR3Curva de dupla curvatura

Conexão de cima para baixo

Indice do sítio de conexão 0 (em cima) para a forma final e o índice. 2 (inferior) para a forma de partida, que permite criar um conector vertical cima-abaixo:

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

Diagrama de fluxo com múltiplos conectores

Defina uma função auxiliar para adicionar caixas rotuladas e outra para criar conectores entre elas, em seguida, construa um diagrama de fluxo com várias etapas em um único slide:

#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>
#include <string_view>

using namespace Aspose::Slides::Foss;

AutoShape& add_box(Slide& slide, std::string_view 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;
}

Ver também:

 Português