Como aplicar efeitos e sombras 3D para formas

Como aplicar efeitos e sombras 3D para formas

Este guia mostra como aplicar efeitos visuais 2D e 3D para formas do PowerPoint usando Aspose.Slides FOSS for Python. Use shape.effect_format para efeitos 2D (sombra externa, brilho, desfoque, borda macia) e shape.three_d_format Para a aparência 3D (bevel, perspectiva da câmara, plataforma de iluminação, material, profundidade), ambos os sistemas de efeitos podem ser combinados na mesma forma.


Precondições

Instale a biblioteca no seu ambiente Python executando o seguinte comando pip antes de executar qualquer exemplo:

pip install aspose-slides-foss

Adicionar uma sombra de gota exterior

Ativar uma sombra de queda chamando ef.enable_outer_shadow_effect(), em seguida, definir raio de desfoque, direção e distância:

from aspose.slides_foss import ShapeType
from aspose.slides_foss.drawing import Color
import aspose.slides_foss as slides
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    shape = prs.slides[0].shapes.add_auto_shape(
        ShapeType.RECTANGLE, 100, 100, 300, 120
    )
    shape.add_text_frame("Shadowed Shape")

    ef = shape.effect_format
    ef.enable_outer_shadow_effect()
    ef.outer_shadow_effect.blur_radius = 10       # softness in points
    ef.outer_shadow_effect.direction = 315        # 315° = upper-left
    ef.outer_shadow_effect.distance = 8           # offset in points
    ef.outer_shadow_effect.shadow_color.color = Color.from_argb(128, 0, 0, 0)

    prs.save("shadow.pptx", SaveFormat.PPTX)

Comum direction valores de: 0- Certo, não., 45= inferior-direita, 90= para baixo, 180= à esquerda, 270- Para cima., 315- A esquerda.


Adicionar um efeito de brilho

Ativar um anel de brilho em torno da forma chamando ef.enable_glow_effect(), então defina o raio e a cor:

from aspose.slides_foss import ShapeType
from aspose.slides_foss.drawing import Color
import aspose.slides_foss as slides
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    shape = prs.slides[0].shapes.add_auto_shape(
        ShapeType.ELLIPSE, 150, 100, 250, 250
    )

    ef = shape.effect_format
    ef.enable_glow_effect()
    ef.glow_effect.radius = 20
    ef.glow_effect.color.color = Color.from_argb(255, 255, 215, 0)  # gold

    prs.save("glow.pptx", SaveFormat.PPTX)

Aplicar um desfoque gaussiano

Aplicar um desfoque gaussiano a uma forma chamando shape.effect_format.set_blur_effect(radius, grow) onde o raio é a difusão da mancha em pontos:

from aspose.slides_foss import ShapeType
import aspose.slides_foss as slides
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    shape = prs.slides[0].shapes.add_auto_shape(
        ShapeType.RECTANGLE, 100, 100, 350, 180
    )
    shape.effect_format.set_blur_effect(radius=10, grow=True)

    prs.save("blur.pptx", SaveFormat.PPTX)

grow=True expande a região de desfocamento para além do limite da forma; grow=False Clip a mancha dentro da forma.


Aplicar um Bevel 3D

Adicionar um bisel de borda elevada por configuração shape.three_d_format.bevel_top.bevel_type a uma BevelPresetType constante, depois a largura e altura:

from aspose.slides_foss import ShapeType, BevelPresetType
import aspose.slides_foss as slides
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    shape = prs.slides[0].shapes.add_auto_shape(
        ShapeType.RECTANGLE, 150, 150, 280, 120
    )
    shape.add_text_frame("3D Button")

    tdf = shape.three_d_format
    tdf.bevel_top.bevel_type = BevelPresetType.CIRCLE
    tdf.bevel_top.width = 12
    tdf.bevel_top.height = 6

    prs.save("bevel.pptx", SaveFormat.PPTX)

BevelPresetType valores de: CIRCLE, RELAXED_INSET, COOL_SLANT, DIVOT, RIBLET, HARD_EDGE, SLOPE, CONVEX


3D Bevel with Camera and Light Rig

Combine um bisel com uma projeção de câmera e equipamento de luz para produzir uma aparência tridimensional do metal. tdf.camera.camera_type, tdf.light_rig.light_type, tdf.light_rig.direction, e tdf.material:

from aspose.slides_foss import (
    ShapeType, BevelPresetType, CameraPresetType,
    LightRigPresetType, LightingDirection, MaterialPresetType,
)
import aspose.slides_foss as slides
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    shape = prs.slides[0].shapes.add_auto_shape(
        ShapeType.RECTANGLE, 150, 150, 280, 120
    )
    shape.add_text_frame("Metal Button")

    tdf = shape.three_d_format
    tdf.bevel_top.bevel_type = BevelPresetType.CIRCLE
    tdf.bevel_top.width = 10
    tdf.bevel_top.height = 5
    tdf.camera.camera_type = CameraPresetType.PERSPECTIVE_ABOVE
    tdf.light_rig.light_type = LightRigPresetType.BALANCED
    tdf.light_rig.direction = LightingDirection.TOP
    tdf.material = MaterialPresetType.METAL
    tdf.depth = 20

    prs.save("3d-metal.pptx", SaveFormat.PPTX)

Combina sombra e 3D Bevel

Os dois sistemas de efeito podem ser ativados simultaneamente na mesma forma:

from aspose.slides_foss import (
    ShapeType, FillType, BevelPresetType,
    CameraPresetType, MaterialPresetType,
)
from aspose.slides_foss.drawing import Color
import aspose.slides_foss as slides
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    shape = prs.slides[0].shapes.add_auto_shape(
        ShapeType.ROUND_CORNER_RECTANGLE, 150, 150, 320, 130
    )
    shape.add_text_frame("Premium Card")

    # Solid fill
    shape.fill_format.fill_type = FillType.SOLID
    shape.fill_format.solid_fill_color.color = Color.from_argb(255, 30, 80, 180)

    # 3D bevel
    tdf = shape.three_d_format
    tdf.bevel_top.bevel_type = BevelPresetType.CIRCLE
    tdf.bevel_top.width = 8
    tdf.camera.camera_type = CameraPresetType.PERSPECTIVE_ABOVE
    tdf.material = MaterialPresetType.PLASTIC

    # Drop shadow
    ef = shape.effect_format
    ef.enable_outer_shadow_effect()
    ef.outer_shadow_effect.blur_radius = 12
    ef.outer_shadow_effect.direction = 270
    ef.outer_shadow_effect.distance = 6
    ef.outer_shadow_effect.shadow_color.color = Color.from_argb(80, 0, 0, 0)

    prs.save("premium-card.pptx", SaveFormat.PPTX)

Verificar e remover efeitos

Verifique se uma forma tem efeitos ativos usando: ef.is_no_effects, então desativar efeitos individuais com o ef.disable_outer_shadow_effect() ou a) ef.disable_glow_effect():

from aspose.slides_foss import ShapeType
import aspose.slides_foss as slides

with slides.Presentation() as prs:
    shape = prs.slides[0].shapes.add_auto_shape(
        ShapeType.RECTANGLE, 100, 100, 200, 100
    )
    ef = shape.effect_format

    ef.enable_outer_shadow_effect()
    ef.enable_glow_effect()
    print(f"Has effects: {not ef.is_no_effects}")  # True

    ef.disable_outer_shadow_effect()
    ef.disable_glow_effect()
    print(f"Has effects: {not ef.is_no_effects}")  # False

Ver também:

 Português