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

خطية Gradient Fill

توقف الجرادين يسمح لك لخلط من لون إلى آخر عبر الشكل:

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

لا تثبيت مكتب، لا مفاتيح الترخيص، ولا مكالمات الشبكة؛ كل المعالجة تحدث محليا.


الموارد ذات الصلة