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.


Hệ thống Đổ màu

Mỗi hình dạng đều có một fill_format() điều khiển cách nội bộ của nó được tô màu. Năm loại tô đầy bao phủ toàn bộ dải màu thiết kế của PowerPoint.

Đổ màu đặc

Kiểu đổ màu đơn giản nhất, một màu đồng nhất với độ trong suốt tùy chọn:

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

Đổ màu Gradient tuyến tính

Các điểm dừng gradient cho phép bạn pha trộn từ màu này sang màu khác trên toàn hình dạng:

#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

Bóng đổ ngoài

Gắn một bóng đổ bán trong suốt vào bất kỳ hình dạng nào:

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

Hiệu ứng Glow

Một hào quang màu xung quanh cạnh hình dạng:

#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

Bevel và Vật liệu

Phương pháp three_d_format() cung cấp cho bất kỳ hình phẳng nào một diện mạo ba chiều. Kết hợp một bevel với một cài đặt trước của camera và một vật liệu để có kết quả phong phú nhất:

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

Kết hợp các hiệu ứng trên cùng một hình dạng

Bóng và định dạng 3D có thể cùng tồn tại trên một hình dạng duy nhất, cho phép tạo ra các thiết kế “card” được tinh chỉnh:

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

Cài đặt

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)

Không cần cài đặt Office, không cần khóa giấy phép, không có cuộc gọi mạng; mọi xử lý đều diễn ra cục bộ.


Tài nguyên liên quan