ทำงานกับเอฟเฟกต์ 3 มิติและเอฟเฟกต์ภาพ — Aspose.Slides FOSS for C++

Aspose.Slides FOSS for C++ มีระบบเอฟเฟกต์สองระบบแยกกันที่สามารถเข้าถึงได้บนรูปทรงทุกรูป:

  • EffectFormat (shape.effect_format()): เอฟเฟกต์ภาพ 2D: shadow, glow, soft edge, blur, reflection
  • ThreeDFormat (shape.three_d_format()): รูปลักษณ์ 3D: bevel, camera projection, light rig, material, extrusion depth

ทั้งสองคงอยู่ผ่านรอบการบันทึก/โหลดใหม่


เอฟเฟกต์ภาพ (EffectFormat)

เงาตกกระทบด้านนอก

#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/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 pres;
    auto& shape = pres.slides()[0].shapes().add_auto_shape(
        ShapeType::RECTANGLE, 100, 100, 300, 120);
    shape.text_frame()->set_text("Shadowed Text");

    auto& ef = shape.effect_format();
    ef.enable_outer_shadow_effect();
    auto* shadow = ef.outer_shadow_effect();
    shadow->set_blur_radius(10);      // softness in points
    shadow->set_direction(315);       // angle: 315 = upper-left cast
    shadow->set_distance(8);          // offset in points
    shadow->shadow_color().set_color(Color::from_argb(128, 0, 0, 0));  // semi-transparent black

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

ค่าทั่วไปของ direction: 0 = ขวา, 45 = ล่างขวา, 90 = ลง, 270 = ขึ้น, 315 = บนซ้าย.

เอฟเฟกต์เรืองแสง

#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/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 pres;
    auto& shape = pres.slides()[0].shapes().add_auto_shape(
        ShapeType::ELLIPSE, 150, 100, 200, 200);

    auto& ef = shape.effect_format();
    ef.enable_glow_effect();
    auto* glow = ef.glow_effect();
    glow->set_radius(15);
    glow->color().set_color(Color::gold);

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

ขอบนุ่ม (ขอบแบบขนนก)

#include <Aspose/Slides/Foss/auto_shape.h>
#include <Aspose/Slides/Foss/effect_format.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>

using namespace Aspose::Slides::Foss;

int main() {
    Presentation pres;
    auto& shape = pres.slides()[0].shapes().add_auto_shape(
        ShapeType::RECTANGLE, 100, 100, 350, 180);

    auto& ef = shape.effect_format();
    ef.enable_soft_edge_effect();
    auto* se = ef.soft_edge_effect();
    se->set_radius(12);   // feather radius in points

    pres.save("soft-edge.pptx", SaveFormat::PPTX);
    return 0;
}

เบลอ

#include <Aspose/Slides/Foss/auto_shape.h>
#include <Aspose/Slides/Foss/effect_format.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>

using namespace Aspose::Slides::Foss;

int main() {
    Presentation pres;
    auto& shape = pres.slides()[0].shapes().add_auto_shape(
        ShapeType::RECTANGLE, 100, 100, 350, 180);

    shape.effect_format().set_blur_effect(8, true);

    pres.save("blur.pptx", SaveFormat::PPTX);
    return 0;
}

การจัดรูปแบบ 3D (ThreeDFormat)

เอฟเฟกต์บีเวล

#include <Aspose/Slides/Foss/auto_shape.h>
#include <Aspose/Slides/Foss/bevel_preset_type.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 <Aspose/Slides/Foss/three_d_format.h>

using namespace Aspose::Slides::Foss;

int main() {
    Presentation pres;
    auto& shape = pres.slides()[0].shapes().add_auto_shape(
        ShapeType::RECTANGLE, 150, 150, 250, 120);
    shape.text_frame()->set_text("3D Button");

    auto& tdf = shape.three_d_format();
    tdf.bevel_top().set_bevel_type(BevelPresetType::CIRCLE);
    tdf.bevel_top().set_width(12);
    tdf.bevel_top().set_height(6);

    pres.save("bevel.pptx", SaveFormat::PPTX);
    return 0;
}

ค่า BevelPresetType: CIRCLE, RELAXED_INSET, COOL_SLANT, DIVOT, RIBLET, HARD_EDGE, SLOPE, CONVEX

พรีเซ็ตกล้อง

#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/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/three_d_format.h>

using namespace Aspose::Slides::Foss;

int main() {
    Presentation pres;
    auto& shape = pres.slides()[0].shapes().add_auto_shape(
        ShapeType::RECTANGLE, 150, 150, 250, 120);
    auto& tdf = shape.three_d_format();
    tdf.bevel_top().set_bevel_type(BevelPresetType::CIRCLE);
    tdf.bevel_top().set_width(10);
    tdf.camera().set_camera_type(CameraPresetType::PERSPECTIVE_ABOVE);
    pres.save("camera.pptx", SaveFormat::PPTX);
    return 0;
}

ชุดไฟและวัสดุ

#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/export/save_format.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;

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

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

    pres.save("3d-metal.pptx", SaveFormat::PPTX);
    return 0;
}

ค่า MaterialPresetType: STANDARD, WARM, COOL, PLASTIC, METAL, MATTE, WIREFRAME


การรวมเอฟเฟกต์ 2D และ 3D

คุณสามารถใช้ทั้ง effect_format() และ 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/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 pres;
    auto& shape = pres.slides()[0].shapes().add_auto_shape(
        ShapeType::ROUND_CORNER_RECTANGLE, 150, 150, 300, 120);
    shape.text_frame()->set_text("Premium Card");

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

    // 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(12);
    shadow->set_direction(270);
    shadow->set_distance(6);
    shadow->shadow_color().set_color(Color::from_argb(80, 0, 0, 0));

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

ดูเพิ่มเติม

 ภาษาไทย