Aspose.Slides FOSS for C++ lets you apply professional-quality visual effects to PowerPoint shapes in native C++, with no Microsoft Office and no API keys. This post demonstrates the fill system, 2D effects, and 3D formatting available in the library.


Системата на пълнението

Всяка форма има една fill_format() че контролира как е боядисан интериорът. четири вида пълнеж, показани по-долу, покриват ядрото на дизайнерската палитра на PowerPoint.

твърдо пълнене

Най-простият начин за попълване, плосък цвят с опционална прозрачност:

#include <Aspose/Slides/Foss/auto_shape.h>
#include <Aspose/Slides/Foss/drawing/color.h>
#include <Aspose/Slides/Foss/export/save_format.h>
#include <Aspose/Slides/Foss/fill_format.h>
#include <Aspose/Slides/Foss/fill_type.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;
using namespace Aspose::Slides::Foss::Drawing;

int main() {
    Presentation prs;
    auto& shape = prs.slides()[0].shapes().add_auto_shape(
        ShapeType::ROUND_CORNER_RECTANGLE, 100, 100, 400, 150
    );
    shape.text_frame()->set_text("Solid Fill");

    shape.fill_format().set_fill_type(FillType::SOLID);
    shape.fill_format().solid_fill_color().set_color(Color::from_argb(255, 30, 80, 180));

    prs.save("solid.pptx", SaveFormat::PPTX);
    return 0;
}

Линейно напълване на градиент

Градиент спира ви позволява да се смесват от един цвят към друг по формата:

#include <Aspose/Slides/Foss/auto_shape.h>
#include <Aspose/Slides/Foss/drawing/color.h>
#include <Aspose/Slides/Foss/export/save_format.h>
#include <Aspose/Slides/Foss/fill_format.h>
#include <Aspose/Slides/Foss/fill_type.h>
#include <Aspose/Slides/Foss/gradient_format.h>
#include <Aspose/Slides/Foss/gradient_shape.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>

using namespace Aspose::Slides::Foss;
using namespace Aspose::Slides::Foss::Drawing;

int main() {
    Presentation prs;
    auto& shape = prs.slides()[0].shapes().add_auto_shape(
        ShapeType::RECTANGLE, 100, 100, 400, 150
    );

    auto& ff = shape.fill_format();
    ff.set_fill_type(FillType::GRADIENT);
    auto& gf = ff.gradient_format();
    gf.set_gradient_shape(GradientShape::LINEAR);
    gf.set_linear_gradient_angle(90);   // top-to-bottom

    gf.gradient_stops().add(0.0f, Color::from_argb(255, 30, 80, 180));   // top: blue
    gf.gradient_stops().add(1.0f, Color::from_argb(255, 0, 200, 160));   // bottom: teal

    prs.save("gradient.pptx", SaveFormat::PPTX);
    return 0;
}

2D Visual Effects

Извън Сянка

Прикрепете полупрозрачна капка сянка към всяка форма:

#include <Aspose/Slides/Foss/auto_shape.h>
#include <Aspose/Slides/Foss/drawing/color.h>
#include <Aspose/Slides/Foss/effect_format.h>
#include <Aspose/Slides/Foss/export/save_format.h>
#include <Aspose/Slides/Foss/fill_format.h>
#include <Aspose/Slides/Foss/fill_type.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;
using namespace Aspose::Slides::Foss::Drawing;

int main() {
    Presentation prs;
    auto& shape = prs.slides()[0].shapes().add_auto_shape(
        ShapeType::ROUND_CORNER_RECTANGLE, 100, 100, 350, 150
    );
    shape.text_frame()->set_text("Drop Shadow");

    shape.fill_format().set_fill_type(FillType::SOLID);
    shape.fill_format().solid_fill_color().set_color(Color::white);

    auto& ef = shape.effect_format();
    ef.enable_outer_shadow_effect();
    auto* shadow = ef.outer_shadow_effect();
    shadow->set_blur_radius(12);
    shadow->set_direction(315);   // upper-left
    shadow->set_distance(8);
    shadow->shadow_color().set_color(Color::from_argb(100, 0, 0, 0));

    prs.save("shadow.pptx", SaveFormat::PPTX);
    return 0;
}

Ефект на Glow

Цветни хало около ръба на формата:

#include <Aspose/Slides/Foss/auto_shape.h>
#include <Aspose/Slides/Foss/drawing/color.h>
#include <Aspose/Slides/Foss/effect_format.h>
#include <Aspose/Slides/Foss/export/save_format.h>
#include <Aspose/Slides/Foss/fill_format.h>
#include <Aspose/Slides/Foss/fill_type.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>

using namespace Aspose::Slides::Foss;
using namespace Aspose::Slides::Foss::Drawing;

int main() {
    Presentation prs;
    auto& shape = prs.slides()[0].shapes().add_auto_shape(
        ShapeType::ELLIPSE, 150, 100, 250, 250
    );
    shape.fill_format().set_fill_type(FillType::SOLID);
    shape.fill_format().solid_fill_color().set_color(Color::from_argb(255, 20, 60, 140));

    auto& ef = shape.effect_format();
    ef.enable_glow_effect();
    auto* glow = ef.glow_effect();
    glow->set_radius(20);
    glow->color().set_color(Color::from_argb(200, 0, 180, 255));

    prs.save("glow.pptx", SaveFormat::PPTX);
    return 0;
}

3D Formatting

Бъдене и материал

и на three_d_format() методът дава всяка плоска форма триизмерен външен вид. Комбинирайте бевел с камера предсета и материал за най-богатия резултат:

#include <Aspose/Slides/Foss/auto_shape.h>
#include <Aspose/Slides/Foss/bevel_preset_type.h>
#include <Aspose/Slides/Foss/camera_preset_type.h>
#include <Aspose/Slides/Foss/drawing/color.h>
#include <Aspose/Slides/Foss/export/save_format.h>
#include <Aspose/Slides/Foss/fill_format.h>
#include <Aspose/Slides/Foss/fill_type.h>
#include <Aspose/Slides/Foss/light_rig_preset_type.h>
#include <Aspose/Slides/Foss/lighting_direction.h>
#include <Aspose/Slides/Foss/material_preset_type.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 <Aspose/Slides/Foss/three_d_format.h>

using namespace Aspose::Slides::Foss;
using namespace Aspose::Slides::Foss::Drawing;

int main() {
    Presentation prs;
    auto& shape = prs.slides()[0].shapes().add_auto_shape(
        ShapeType::RECTANGLE, 150, 150, 300, 130
    );
    shape.text_frame()->set_text("Metal Button");

    // Blue solid fill
    shape.fill_format().set_fill_type(FillType::SOLID);
    shape.fill_format().solid_fill_color().set_color(Color::from_argb(255, 20, 70, 160));

    // 3D bevel + camera + light + material
    auto& tdf = shape.three_d_format();
    tdf.bevel_top().set_bevel_type(BevelPresetType::CIRCLE);
    tdf.bevel_top().set_width(10);
    tdf.bevel_top().set_height(5);
    tdf.camera().set_camera_type(CameraPresetType::PERSPECTIVE_ABOVE);
    tdf.light_rig().set_light_type(LightRigPresetType::BALANCED);
    tdf.light_rig().set_direction(LightingDirection::TOP);
    tdf.set_material(MaterialPresetType::METAL);
    tdf.set_depth(20);

    prs.save("metal-button.pptx", SaveFormat::PPTX);
    return 0;
}

Комбиниране на ефектите в една и съща форма

Сянка и 3D форматиране могат да съществуват заедно в една форма, което позволява полирани “карти” дизайни:

#include <Aspose/Slides/Foss/auto_shape.h>
#include <Aspose/Slides/Foss/bevel_preset_type.h>
#include <Aspose/Slides/Foss/camera_preset_type.h>
#include <Aspose/Slides/Foss/drawing/color.h>
#include <Aspose/Slides/Foss/effect_format.h>
#include <Aspose/Slides/Foss/export/save_format.h>
#include <Aspose/Slides/Foss/fill_format.h>
#include <Aspose/Slides/Foss/fill_type.h>
#include <Aspose/Slides/Foss/material_preset_type.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 <Aspose/Slides/Foss/three_d_format.h>

using namespace Aspose::Slides::Foss;
using namespace Aspose::Slides::Foss::Drawing;

int main() {
    Presentation prs;
    auto& shape = prs.slides()[0].shapes().add_auto_shape(
        ShapeType::ROUND_CORNER_RECTANGLE, 120, 120, 360, 150
    );
    shape.text_frame()->set_text("Premium Card");

    // Fill
    shape.fill_format().set_fill_type(FillType::SOLID);
    shape.fill_format().solid_fill_color().set_color(Color::from_argb(255, 30, 80, 180));

    // 3D bevel
    auto& tdf = shape.three_d_format();
    tdf.bevel_top().set_bevel_type(BevelPresetType::CIRCLE);
    tdf.bevel_top().set_width(8);
    tdf.camera().set_camera_type(CameraPresetType::PERSPECTIVE_ABOVE);
    tdf.set_material(MaterialPresetType::PLASTIC);

    // Drop shadow
    auto& ef = shape.effect_format();
    ef.enable_outer_shadow_effect();
    auto* shadow = ef.outer_shadow_effect();
    shadow->set_blur_radius(14);
    shadow->set_direction(270);
    shadow->set_distance(8);
    shadow->shadow_color().set_color(Color::from_argb(70, 0, 0, 0));

    prs.save("premium-card.pptx", SaveFormat::PPTX);
    return 0;
}

инсталация

include(FetchContent)
FetchContent_Declare(
    aspose_slides_foss
    GIT_REPOSITORY https://github.com/aspose-slides-foss/Aspose.Slides-FOSS-for-Cpp.git
    GIT_TAG main
)
FetchContent_MakeAvailable(aspose_slides_foss)
target_link_libraries(your_target PRIVATE aspose_slides_foss)

Няма Office инсталация, няма лицензионни ключове, не се обаждат мрежови повиквания; цялата обработка се извършва локално.


Свързани ресурси