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.
Il sistema di riempimento
Ogni forma ha un fill_format() che controlla come viene dipinto il suo interno. I cinque tipi di riempimento coprono l’intera gamma della palette di design di PowerPoint.
Riempimento solido
Il riempimento più semplice, un colore uniforme con trasparenza opzionale:
#include <Aspose/Slides/Foss/presentation.h>
using namespace Aspose::Slides::Foss;
Presentation prs;
auto& shape = prs.slides()[0].shapes().add_auto_shape(
ShapeType::RoundCornerRectangle, 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);
Riempimento a gradiente lineare
Le fermate del gradiente ti permettono di sfumare da un colore all’altro attraverso la forma:
#include <Aspose/Slides/Foss/presentation.h>
using namespace Aspose::Slides::Foss;
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);
2D Visual Effects
Ombra esterna a caduta
Allega un’ombra a caduta semitrasparente a qualsiasi forma:
#include <Aspose/Slides/Foss/presentation.h>
using namespace Aspose::Slides::Foss;
Presentation prs;
auto& shape = prs.slides()[0].shapes().add_auto_shape(
ShapeType::RoundCornerRectangle, 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();
ef.outer_shadow_effect().set_blur_radius(12);
ef.outer_shadow_effect().set_direction(315); // upper-left
ef.outer_shadow_effect().set_distance(8);
ef.outer_shadow_effect().shadow_color().set_color(Color::from_argb(100, 0, 0, 0));
prs.save("shadow.pptx", SaveFormat::PPTX);
Effetto bagliore
Un alone colorato attorno al bordo della forma:
#include <Aspose/Slides/Foss/presentation.h>
using namespace Aspose::Slides::Foss;
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();
ef.glow_effect().set_radius(20);
ef.glow_effect().color().set_color(Color::from_argb(200, 0, 180, 255));
prs.save("glow.pptx", SaveFormat::PPTX);
3D Formatting
Smusso e Materiale
Il three_d_format() Il metodo conferisce a qualsiasi forma piatta un aspetto tridimensionale. Combina una smussatura con un preset della fotocamera e un materiale per il risultato più ricco:
#include <Aspose/Slides/Foss/presentation.h>
using namespace Aspose::Slides::Foss;
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::PerspectiveAbove);
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);
Combinare gli effetti sulla stessa forma
Ombra e formattazione 3D possono coesistere su una singola forma, consentendo design di “card” rifiniti:
#include <Aspose/Slides/Foss/presentation.h>
using namespace Aspose::Slides::Foss;
Presentation prs;
auto& shape = prs.slides()[0].shapes().add_auto_shape(
ShapeType::RoundCornerRectangle, 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::PerspectiveAbove);
tdf.set_material(MaterialPresetType::Plastic);
// Drop shadow
auto& ef = shape.effect_format();
ef.enable_outer_shadow_effect();
ef.outer_shadow_effect().set_blur_radius(14);
ef.outer_shadow_effect().set_direction(270);
ef.outer_shadow_effect().set_distance(8);
ef.outer_shadow_effect().shadow_color().set_color(Color::from_argb(70, 0, 0, 0));
prs.save("premium-card.pptx", SaveFormat::PPTX);
Installazione
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)
Nessuna installazione di Office, nessuna chiave di licenza, nessuna chiamata di rete; tutto l’elaborazione avviene localmente.