Formatear formas de PowerPoint en C++
Introducción
En PowerPoint, puedes añadir formas a las diapositivas. Dado que las formas están compuestas por líneas, puedes darles formato modificando o aplicando efectos a sus contornos. Además, puedes dar formato a las formas especificando configuraciones que controlan cómo se rellenan sus interiores.

Aspose.Slides for C++ proporciona interfaces y métodos que le permiten dar formato a las formas usando las mismas opciones disponibles en PowerPoint.
Formato de líneas
Con Aspose.Slides, puedes especificar un estilo de línea personalizado para una forma. Los siguientes pasos describen el procedimiento:
- Crea una instancia de la clase Presentation.
- Obtén una referencia a una diapositiva por su índice.
- Añade un IAutoShape a la diapositiva.
- Establece el line style de la forma.
- Establece el ancho de la línea.
- Establece el dash style de la línea.
- Establece el color de línea para la forma.
- Guarda la presentación modificada como un archivo PPTX.
El siguiente código muestra cómo dar formato a un AutoShape rectangular:
#include <DOM/FillType.h>
#include <DOM/IAutoShape.h>
#include <DOM/IColorFormat.h>
#include <DOM/IFillFormat.h>
#include <DOM/ILineFillFormat.h>
#include <DOM/ILineFormat.h>
#include <DOM/IShapeCollection.h>
#include <DOM/ISlide.h>
#include <DOM/LineDashStyle.h>
#include <DOM/LineStyle.h>
#include <DOM/Presentation.h>
#include <DOM/ShapeType.h>
#include <Export/SaveFormat.h>
#include <drawing/color.h>
#include <system/smart_ptr.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System;
using namespace System::Drawing;
// Instanciar la clase Presentation que representa un archivo de presentación.
auto presentation = MakeObject<Presentation>();
// Obtener la primera diapositiva.
auto slide = presentation->get_Slide(0);
// Agregar una forma automática del tipo Rectángulo.
auto shape = slide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 50, 150, 150, 75);
// Establecer el color de relleno para la forma rectangular.
shape->get_FillFormat()->set_FillType(FillType::NoFill);
// Aplicar formato a las líneas del rectángulo.
shape->get_LineFormat()->set_Style(LineStyle::ThickThin);
shape->get_LineFormat()->set_Width(7);
shape->get_LineFormat()->set_DashStyle(LineDashStyle::Dash);
// Establecer el color de la línea del rectángulo.
shape->get_LineFormat()->get_FillFormat()->set_FillType(FillType::Solid);
shape->get_LineFormat()->get_FillFormat()->get_SolidFillColor()->set_Color(Color::get_Blue());
// Guardar el archivo PPTX en disco.
presentation->Save(u"formatted_lines.pptx", SaveFormat::Pptx);
presentation->Dispose();
El resultado:

Aplicar efectos de boceto a líneas de forma
Un efecto de boceto hace que la línea de una forma parezca dibujada a mano. Utiliza IShape::get_LineFormat para acceder a la configuración de la línea, ILineFormat::get_SketchFormat para acceder a la configuración del boceto y ISketchFormat::set_SketchType para seleccionar un valor de la enumeración LineSketchType.
El siguiente código C++ muestra cómo aplicar un efecto LineSketchType::Curved, leer el valor asignado explícitamente y eliminar el efecto con LineSketchType::None:
auto presentation = MakeObject<Presentation>();
auto slide = presentation->get_Slide(0);
auto shape = slide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 50, 50, 200, 100);
// Access the shape's line format and its sketch format.
auto sketchFormat = shape->get_LineFormat()->get_SketchFormat();
// Apply a sketch effect.
sketchFormat->set_SketchType(LineSketchType::Curved);
// Read the sketch effect assigned directly to the shape.
auto explicitSketchType = sketchFormat->get_SketchType();
Console::WriteLine(u"Explicit sketch type: {0}", explicitSketchType);
// Remove the sketch effect.
sketchFormat->set_SketchType(LineSketchType::None);
presentation->Dispose();
El valor devuelto por ISketchFormat::get_SketchType representa la configuración asignada directamente a la forma. Si el formato de línea puede heredarse de un tema, una diapositiva maestra o una diapositiva de diseño, utiliza ILineFormat::GetEffective, accede a ILineFormatEffectiveData::get_SketchFormat, y lee ISketchFormatEffectiveData::get_SketchType. El valor efectivo refleja el formato que realmente se aplica después de resolver la herencia:
auto presentation = MakeObject<Presentation>(u"presentation.pptx");
auto shape = presentation->get_Slide(0)->get_Shape(0);
auto lineFormat = shape->get_LineFormat();
auto explicitSketchType = lineFormat->get_SketchFormat()->get_SketchType();
auto effectiveLineFormat = lineFormat->GetEffective();
auto effectiveSketchType = effectiveLineFormat->get_SketchFormat()->get_SketchType();
Console::WriteLine(u"Explicit sketch type: {0}", explicitSketchType);
Console::WriteLine(u"Effective sketch type: {0}", effectiveSketchType);
presentation->Dispose();
Formato de estilos de unión
Estas son las tres opciones de tipo de unión:
- Round
- Miter
- Bevel
Por defecto, cuando PowerPoint une dos líneas en un ángulo (como en la esquina de una forma), utiliza la configuración Round. Sin embargo, si estás dibujando una forma con ángulos pronunciados, puede que prefieras la opción Miter.

El siguiente código C++ muestra cómo se crearon tres rectángulos (como se muestra en la imagen anterior) usando los ajustes de tipo de unión Miter, Bevel y Round:
#include <DOM/FillType.h>
#include <DOM/IAutoShape.h>
#include <DOM/IColorFormat.h>
#include <DOM/IFillFormat.h>
#include <DOM/ILineFillFormat.h>
#include <DOM/ILineFormat.h>
#include <DOM/IShapeCollection.h>
#include <DOM/ISlide.h>
#include <DOM/ITextFrame.h>
#include <DOM/LineJoinStyle.h>
#include <DOM/Presentation.h>
#include <DOM/ShapeType.h>
#include <Export/SaveFormat.h>
#include <drawing/color.h>
#include <system/smart_ptr.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System;
using namespace System::Drawing;
// Instanciar la clase Presentation que representa un archivo de presentación.
auto presentation = MakeObject<Presentation>();
// Obtener la primera diapositiva.
auto slide = presentation->get_Slide(0);
// Agregar tres formas automáticas del tipo Rectángulo.
auto shape1 = slide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 20, 20, 150, 75);
auto shape2 = slide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 210, 20, 150, 75);
auto shape3 = slide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 20, 135, 150, 75);
// Establecer el color de relleno para cada forma rectangular.
shape1->get_FillFormat()->set_FillType(FillType::Solid);
shape1->get_FillFormat()->get_SolidFillColor()->set_Color(Color::get_Black());
shape2->get_FillFormat()->set_FillType(FillType::Solid);
shape2->get_FillFormat()->get_SolidFillColor()->set_Color(Color::get_Black());
shape3->get_FillFormat()->set_FillType(FillType::Solid);
shape3->get_FillFormat()->get_SolidFillColor()->set_Color(Color::get_Black());
// Establecer el ancho de la línea.
shape1->get_LineFormat()->set_Width(15);
shape2->get_LineFormat()->set_Width(15);
shape3->get_LineFormat()->set_Width(15);
// Establecer el color de la línea de cada rectángulo.
shape1->get_LineFormat()->get_FillFormat()->set_FillType(FillType::Solid);
shape1->get_LineFormat()->get_FillFormat()->get_SolidFillColor()->set_Color(Color::get_Blue());
shape2->get_LineFormat()->get_FillFormat()->set_FillType(FillType::Solid);
shape2->get_LineFormat()->get_FillFormat()->get_SolidFillColor()->set_Color(Color::get_Blue());
shape3->get_LineFormat()->get_FillFormat()->set_FillType(FillType::Solid);
shape3->get_LineFormat()->get_FillFormat()->get_SolidFillColor()->set_Color(Color::get_Blue());
// Establecer el estilo de unión.
shape1->get_LineFormat()->set_JoinStyle(LineJoinStyle::Miter);
shape2->get_LineFormat()->set_JoinStyle(LineJoinStyle::Bevel);
shape3->get_LineFormat()->set_JoinStyle(LineJoinStyle::Round);
// Agregar texto a cada rectángulo.
shape1->get_TextFrame()->set_Text(u"Miter Join Style");
shape2->get_TextFrame()->set_Text(u"Bevel Join Style");
shape3->get_TextFrame()->set_Text(u"Round Join Style");
// Guardar el archivo PPTX en disco.
presentation->Save(u"join_styles.pptx", SaveFormat::Pptx);
presentation->Dispose();
Relleno degradado
En PowerPoint, Relleno degradado es una opción de formato que permite aplicar una mezcla continua de colores a una forma. Por ejemplo, puedes aplicar dos o más colores de forma que uno se desvanezca gradualmente en otro.
Así es como se aplica un relleno degradado a una forma usando Aspose.Slides:
- Crea una instancia de la clase Presentation.
- Obtén una referencia a una diapositiva por su índice.
- Añade un IAutoShape a la diapositiva.
- Establece el FillType de la forma a
Gradient. - Añade tus dos colores preferidos con posiciones definidas usando los métodos
Addde la colección de paradas de degradado expuesta por la interfaz IGradientFormat. - Guarda la presentación modificada como un archivo PPTX.
#include <DOM/FillType.h>
#include <DOM/GradientDirection.h>
#include <DOM/GradientShape.h>
#include <DOM/IAutoShape.h>
#include <DOM/IFillFormat.h>
#include <DOM/IGradientFormat.h>
#include <DOM/IGradientStopCollection.h>
#include <DOM/IShapeCollection.h>
#include <DOM/ISlide.h>
#include <DOM/Presentation.h>
#include <DOM/PresetColor.h>
#include <DOM/ShapeType.h>
#include <Export/SaveFormat.h>
#include <system/smart_ptr.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System;
// Instanciar la clase Presentation que representa un archivo de presentación.
auto presentation = MakeObject<Presentation>();
// Obtener la primera diapositiva.
auto slide = presentation->get_Slide(0);
// Agregar una forma automática del tipo Elipse.
auto shape = slide->get_Shapes()->AddAutoShape(ShapeType::Ellipse, 50, 50, 150, 75);
// Aplicar formato de degradado a la elipse.
shape->get_FillFormat()->set_FillType(FillType::Gradient);
shape->get_FillFormat()->get_GradientFormat()->set_GradientShape(GradientShape::Linear);
// Establecer la dirección del degradado.
shape->get_FillFormat()->get_GradientFormat()->set_GradientDirection(GradientDirection::FromCorner2);
// Añadir dos paradas de degradado.
shape->get_FillFormat()->get_GradientFormat()->get_GradientStops()->Add(1.0f, PresetColor::Purple);
shape->get_FillFormat()->get_GradientFormat()->get_GradientStops()->Add(0.0f, PresetColor::Red);
// Guardar el archivo PPTX en disco.
presentation->Save(u"gradient_fill.pptx", SaveFormat::Pptx);
presentation->Dispose();

Si un degradado se ve diferente en una imagen exportada que en PowerPoint, consulta Choose a Gradient Rendering Style. Puedes seleccionar un estilo de renderizado sin cambiar el relleno degradado almacenado en la presentación.
Relleno de patrón
En PowerPoint, Relleno de patrón es una opción de formato que permite aplicar un diseño de dos colores —como puntos, rayas, tramas o cuadriculado— a una forma. Puedes elegir colores personalizados para el primer plano y el fondo del patrón.
Aspose.Slides ofrece más de 45 estilos de patrón predefinidos que puedes aplicar a las formas para mejorar el atractivo visual de tus presentaciones. Incluso después de seleccionar un patrón predefinido, puedes especificar los colores exactos que debe usar.
Así es como se aplica un relleno de patrón a una forma usando Aspose.Slides:
- Crea una instancia de la clase Presentation.
- Obtén una referencia a una diapositiva por su índice.
- Añade un IAutoShape a la diapositiva.
- Establece el FillType de la forma a
Pattern. - Elige un estilo de patrón de las opciones predefinidas.
- Establece el Background Color del patrón.
- Establece el Foreground Color del patrón.
- Guarda la presentación modificada como un archivo PPTX.
#include <DOM/FillType.h>
#include <DOM/IAutoShape.h>
#include <DOM/IColorFormat.h>
#include <DOM/IFillFormat.h>
#include <DOM/IPatternFormat.h>
#include <DOM/IShapeCollection.h>
#include <DOM/ISlide.h>
#include <DOM/PatternStyle.h>
#include <DOM/Presentation.h>
#include <DOM/ShapeType.h>
#include <Export/SaveFormat.h>
#include <drawing/color.h>
#include <system/smart_ptr.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System;
using namespace System::Drawing;
// Instanciar la clase Presentation que representa un archivo de presentación.
auto presentation = MakeObject<Presentation>();
// Obtener la primera diapositiva.
auto slide = presentation->get_Slide(0);
// Añadir una forma automática del tipo Rectángulo.
auto shape = slide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 50, 50, 150, 75);
// Establecer el tipo de relleno a Patrón.
shape->get_FillFormat()->set_FillType(FillType::Pattern);
// Establecer el estilo de patrón.
shape->get_FillFormat()->get_PatternFormat()->set_PatternStyle(PatternStyle::Trellis);
// Establecer los colores de fondo y primer plano del patrón.
shape->get_FillFormat()->get_PatternFormat()->get_BackColor()->set_Color(Color::get_LightGray());
shape->get_FillFormat()->get_PatternFormat()->get_ForeColor()->set_Color(Color::get_Yellow());
// Guardar el archivo PPTX en disco.
presentation->Save(u"pattern_fill.pptx", SaveFormat::Pptx);
presentation->Dispose();

Relleno de imagen
En PowerPoint, Relleno de imagen es una opción de formato que permite insertar una imagen dentro de una forma —utilizando efectivamente la imagen como fondo de la forma.
Así es como usar Aspose.Slides para aplicar un relleno de imagen a una forma:
- Crea una instancia de la clase Presentation.
- Obtén una referencia a una diapositiva por su índice.
- Añade un IAutoShape a la diapositiva.
- Establece el FillType de la forma a
Picture. - Establece el modo de relleno de imagen a
Tile(u otro modo preferido). - Crea un objeto IPPImage a partir de la imagen que deseas usar.
- Pasa la imagen al método
ISlidesPicture.set_Image. - Guarda la presentación modificada como un archivo PPTX.
Supongamos que tenemos un archivo “lotus.png” con la siguiente imagen:

#include <DOM/FillType.h>
#include <DOM/IAutoShape.h>
#include <DOM/IFillFormat.h>
#include <DOM/IImageCollection.h>
#include <DOM/IPictureFillFormat.h>
#include <DOM/IShapeCollection.h>
#include <DOM/ISlide.h>
#include <DOM/ISlidesPicture.h>
#include <DOM/PictureFillMode.h>
#include <DOM/Presentation.h>
#include <DOM/ShapeType.h>
#include <Export/SaveFormat.h>
#include <IImage.h>
#include <Util/Images.h>
#include <system/smart_ptr.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System;
// Instanciar la clase Presentation que representa un archivo de presentación.
auto presentation = MakeObject<Presentation>();
// Obtener la primera diapositiva.
auto slide = presentation->get_Slide(0);
// Añadir una forma automática del tipo Rectángulo.
auto shape = slide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 50, 50, 255, 130);
// Establecer el tipo de relleno a Imagen.
shape->get_FillFormat()->set_FillType(FillType::Picture);
// Establecer el modo de relleno de imagen.
shape->get_FillFormat()->get_PictureFillFormat()->set_PictureFillMode(PictureFillMode::Tile);
// Cargar una imagen y añadirla a los recursos de la presentación.
auto image = Images::FromFile(u"lotus.png");
auto picture = presentation->get_Images()->AddImage(image);
image->Dispose();
// Establecer la imagen.
shape->get_FillFormat()->get_PictureFillFormat()->get_Picture()->set_Image(picture);
// Guardar el archivo PPTX en disco.
presentation->Save(u"picture_fill.pptx", SaveFormat::Pptx);
presentation->Dispose();

Imagen en mosaico como textura
Si deseas establecer una imagen en mosaico como textura y personalizar el comportamiento del mosaico, puedes usar los siguientes métodos de la interfaz IPictureFillFormat y la clase PictureFillFormat:
- set_PictureFillMode: Establece el modo de relleno de imagen —
TileoStretch. - set_TileAlignment: Especifica la alineación de los mosaicos dentro de la forma.
- set_TileFlip: Controla si el mosaico se voltea horizontalmente, verticalmente o en ambas direcciones.
- set_TileOffsetX: Establece el desplazamiento horizontal del mosaico (en puntos) desde el origen de la forma.
- set_TileOffsetY: Establece el desplazamiento vertical del mosaico (en puntos) desde el origen de la forma.
- set_TileScaleX: Define la escala horizontal del mosaico como porcentaje.
- set_TileScaleY: Define la escala vertical del mosaico como porcentaje.
El siguiente ejemplo de código muestra cómo agregar una forma rectangular con un relleno de imagen en mosaico y configurar las opciones de mosaico:
#include <DOM/FillType.h>
#include <DOM/IAutoShape.h>
#include <DOM/IFillFormat.h>
#include <DOM/IImageCollection.h>
#include <DOM/IPictureFillFormat.h>
#include <DOM/IShapeCollection.h>
#include <DOM/ISlide.h>
#include <DOM/ISlidesPicture.h>
#include <DOM/PictureFillMode.h>
#include <DOM/Presentation.h>
#include <DOM/RectangleAlignment.h>
#include <DOM/ShapeType.h>
#include <DOM/TileFlip.h>
#include <Export/SaveFormat.h>
#include <IImage.h>
#include <Util/Images.h>
#include <system/smart_ptr.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System;
// Instanciar la clase Presentation que representa un archivo de presentación.
auto presentation = MakeObject<Presentation>();
// Obtener la primera diapositiva.
auto firstSlide = presentation->get_Slide(0);
// Agregar una forma automática rectangular.
auto shape = firstSlide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 50, 50, 190, 95);
// Establecer el tipo de relleno de la forma a Imagen.
shape->get_FillFormat()->set_FillType(FillType::Picture);
// Cargar la imagen y añadirla a los recursos de la presentación.
auto sourceImage = Images::FromFile(u"lotus.png");
auto presentationImage = presentation->get_Images()->AddImage(sourceImage);
sourceImage->Dispose();
// Asignar la imagen a la forma.
auto pictureFillFormat = shape->get_FillFormat()->get_PictureFillFormat();
pictureFillFormat->get_Picture()->set_Image(presentationImage);
// Configurar el modo de relleno de imagen y las propiedades de mosaico.
pictureFillFormat->set_PictureFillMode(PictureFillMode::Tile);
pictureFillFormat->set_TileOffsetX(-32);
pictureFillFormat->set_TileOffsetY(-32);
pictureFillFormat->set_TileScaleX(50);
pictureFillFormat->set_TileScaleY(50);
pictureFillFormat->set_TileAlignment(RectangleAlignment::BottomRight);
pictureFillFormat->set_TileFlip(TileFlip::FlipBoth);
// Guardar el archivo PPTX en disco.
presentation->Save(u"tile.pptx", SaveFormat::Pptx);
presentation->Dispose();

Relleno de color sólido
En PowerPoint, Relleno de color sólido es una opción de formato que rellena una forma con un único color uniforme. Este color de fondo liso se aplica sin degradados, texturas o patrones.
Para aplicar un relleno de color sólido a una forma usando Aspose.Slides, sigue estos pasos:
- Crea una instancia de la clase Presentation.
- Obtén una referencia a una diapositiva por su índice.
- Añade un IAutoShape a la diapositiva.
- Establece el FillType de la forma a
Solid. - Asigna tu color de relleno preferido a la forma.
- Guarda la presentación modificada como un archivo PPTX.
#include <DOM/FillType.h>
#include <DOM/IAutoShape.h>
#include <DOM/IColorFormat.h>
#include <DOM/IFillFormat.h>
#include <DOM/IShapeCollection.h>
#include <DOM/ISlide.h>
#include <DOM/Presentation.h>
#include <DOM/ShapeType.h>
#include <Export/SaveFormat.h>
#include <drawing/color.h>
#include <system/smart_ptr.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System;
using namespace System::Drawing;
// Instanciar la clase Presentation que representa un archivo de presentación.
auto presentation = MakeObject<Presentation>();
// Obtener la primera diapositiva.
auto slide = presentation->get_Slide(0);
// Añadir una forma automática del tipo Rectángulo.
auto shape = slide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 50, 50, 150, 75);
// Establecer el tipo de relleno a Solid.
shape->get_FillFormat()->set_FillType(FillType::Solid);
// Establecer el color de relleno.
shape->get_FillFormat()->get_SolidFillColor()->set_Color(Color::get_Yellow());
// Guardar el archivo PPTX en disco.
presentation->Save(u"solid_color_fill.pptx", SaveFormat::Pptx);
presentation->Dispose();

Establecer transparencia
En PowerPoint, cuando aplicas un relleno de color sólido, degradado, imagen o textura a formas, también puedes establecer un nivel de transparencia para controlar la opacidad del relleno. Un valor de transparencia más alto hace que la forma sea más translúcida, permitiendo que el fondo o los objetos subyacentes sean parcialmente visibles.
Aspose.Slides permite establecer el nivel de transparencia ajustando el valor alfa del color utilizado para el relleno. Así es como se hace:
- Crea una instancia de la clase Presentation.
- Obtén una referencia a una diapositiva por su índice.
- Añade un IAutoShape a la diapositiva.
- Establece el FillType a
Solid. - Utiliza
Colorpara definir un color con transparencia (el componentealphacontrola la transparencia). - Guarda la presentación.
#include <DOM/FillType.h>
#include <DOM/IAutoShape.h>
#include <DOM/IColorFormat.h>
#include <DOM/IFillFormat.h>
#include <DOM/IShapeCollection.h>
#include <DOM/ISlide.h>
#include <DOM/Presentation.h>
#include <DOM/ShapeType.h>
#include <Export/SaveFormat.h>
#include <drawing/color.h>
#include <system/smart_ptr.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System;
using namespace System::Drawing;
// Instanciar la clase Presentation que representa un archivo de presentación.
auto presentation = MakeObject<Presentation>();
// Obtener la primera diapositiva.
auto slide = presentation->get_Slide(0);
// Agregar una forma automática rectangular sólida.
auto solidShape = slide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 50, 50, 150, 75);
// Agregar una forma automática rectangular transparente sobre la forma sólida.
auto transparentShape = slide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 80, 80, 150, 75);
transparentShape->get_FillFormat()->set_FillType(FillType::Solid);
transparentShape->get_FillFormat()->get_SolidFillColor()->set_Color(Color::FromArgb(204, 255, 255, 0));
// Guardar el archivo PPTX en disco.
presentation->Save(u"shape_transparency.pptx", SaveFormat::Pptx);
presentation->Dispose();

Rotar formas
Aspose.Slides permite rotar formas en presentaciones de PowerPoint. Esto puede ser útil al posicionar elementos visuales con requisitos específicos de alineación o diseño.
Para rotar una forma en una diapositiva, sigue estos pasos:
- Crea una instancia de la clase Presentation.
- Obtén una referencia a una diapositiva por su índice.
- Añade un IAutoShape a la diapositiva.
- Establece la propiedad de rotación de la forma al ángulo deseado.
- Guarda la presentación.
#include <DOM/IAutoShape.h>
#include <DOM/IShapeCollection.h>
#include <DOM/ISlide.h>
#include <DOM/Presentation.h>
#include <DOM/ShapeType.h>
#include <Export/SaveFormat.h>
#include <system/smart_ptr.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System;
// Instanciar la clase Presentation que representa un archivo de presentación.
auto presentation = MakeObject<Presentation>();
// Obtener la primera diapositiva.
auto slide = presentation->get_Slide(0);
// Agregar una forma automática del tipo Rectángulo.
auto shape = slide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 50, 50, 150, 75);
// Rotar la forma 5 grados.
shape->set_Rotation(5);
// Guardar el archivo PPTX en disco.
presentation->Save(u"shape_rotation.pptx", SaveFormat::Pptx);
presentation->Dispose();

Agregar efectos de bisel 3D
Aspose.Slides permite aplicar efectos de bisel 3D a las formas configurando sus propiedades ThreeDFormat.
Para agregar efectos de bisel 3D a una forma, sigue estos pasos:
- Instancia la clase Presentation.
- Obtén una referencia a una diapositiva por su índice.
- Añade un IAutoShape a la diapositiva.
- Configura el ThreeDFormat de la forma para definir los ajustes de bisel.
- Guarda la presentación.
#include <DOM/BevelPresetType.h>
#include <DOM/CameraPresetType.h>
#include <DOM/FillType.h>
#include <DOM/IAutoShape.h>
#include <DOM/ICamera.h>
#include <DOM/IColorFormat.h>
#include <DOM/IFillFormat.h>
#include <DOM/ILightRig.h>
#include <DOM/ILineFillFormat.h>
#include <DOM/ILineFormat.h>
#include <DOM/IShapeBevel.h>
#include <DOM/IShapeCollection.h>
#include <DOM/ISlide.h>
#include <DOM/IThreeDFormat.h>
#include <DOM/LightRigPresetType.h>
#include <DOM/LightingDirection.h>
#include <DOM/Presentation.h>
#include <DOM/ShapeType.h>
#include <Export/SaveFormat.h>
#include <drawing/color.h>
#include <system/smart_ptr.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System;
using namespace System::Drawing;
// Crear una instancia de la clase Presentation.
auto presentation = MakeObject<Presentation>();
auto slide = presentation->get_Slide(0);
// Añadir una forma a la diapositiva.
auto shape = slide->get_Shapes()->AddAutoShape(ShapeType::Ellipse, 50, 50, 100, 100);
shape->get_FillFormat()->set_FillType(FillType::Solid);
shape->get_FillFormat()->get_SolidFillColor()->set_Color(Color::get_Green());
shape->get_LineFormat()->get_FillFormat()->set_FillType(FillType::Solid);
shape->get_LineFormat()->get_FillFormat()->get_SolidFillColor()->set_Color(Color::get_Orange());
shape->get_LineFormat()->set_Width(2.0);
// Establecer las propiedades ThreeDFormat de la forma.
shape->get_ThreeDFormat()->set_Depth(4.0);
shape->get_ThreeDFormat()->get_BevelTop()->set_BevelType(BevelPresetType::Circle);
shape->get_ThreeDFormat()->get_BevelTop()->set_Height(6);
shape->get_ThreeDFormat()->get_BevelTop()->set_Width(6);
shape->get_ThreeDFormat()->get_Camera()->set_CameraType(CameraPresetType::OrthographicFront);
shape->get_ThreeDFormat()->get_LightRig()->set_LightType(LightRigPresetType::ThreePt);
shape->get_ThreeDFormat()->get_LightRig()->set_Direction(LightingDirection::Top);
// Guardar la presentación como archivo PPTX.
presentation->Save(u"3D_bevel_effect.pptx", SaveFormat::Pptx);
presentation->Dispose();

Agregar efectos de rotación 3D
Aspose.Slides permite aplicar efectos de rotación 3D a las formas configurando sus propiedades ThreeDFormat.
Para aplicar rotación 3D a una forma:
- Crea una instancia de la clase Presentation.
- Obtén una referencia a una diapositiva por su índice.
- Añade un IAutoShape a la diapositiva.
- Utiliza set_CameraType y set_LightType para definir la rotación 3D.
- Guarda la presentación.
#include <DOM/CameraPresetType.h>
#include <DOM/IAutoShape.h>
#include <DOM/ICamera.h>
#include <DOM/ILightRig.h>
#include <DOM/IShapeCollection.h>
#include <DOM/ISlide.h>
#include <DOM/ITextFrame.h>
#include <DOM/IThreeDFormat.h>
#include <DOM/LightRigPresetType.h>
#include <DOM/Presentation.h>
#include <DOM/ShapeType.h>
#include <Export/SaveFormat.h>
#include <system/smart_ptr.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System;
// Crear una instancia de la clase Presentation.
auto presentation = MakeObject<Presentation>();
auto slide = presentation->get_Slide(0);
auto shape = slide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 50, 50, 150, 75);
shape->get_TextFrame()->set_Text(u"Hello, Aspose!");
shape->get_ThreeDFormat()->set_Depth(6);
shape->get_ThreeDFormat()->get_Camera()->SetRotation(40, 35, 20);
shape->get_ThreeDFormat()->get_Camera()->set_CameraType(CameraPresetType::IsometricLeftUp);
shape->get_ThreeDFormat()->get_LightRig()->set_LightType(LightRigPresetType::Balanced);
// Guardar la presentación como archivo PPTX.
presentation->Save(u"3D_rotation_effect.pptx", SaveFormat::Pptx);
presentation->Dispose();

Controlar el renderizado en blanco y negro para formas
El método IShape::set_BlackWhiteMode especifica cómo se renderiza una forma individual cuando una presentación se visualiza o procesa en modo blanco y negro. No habilita la visualización en blanco y negro por sí mismo, ni cambia el relleno, la línea u otro formato de la forma en modo de color normal.
Utiliza un valor de la enumeración BlackWhiteMode para seleccionar el comportamiento deseado. Por ejemplo, Automatic permite que la aplicación de renderizado elija la conversión, Gray y LightGray utilizan colores grises, BlackWhite usa solo blanco y negro, Black y White obligan a un único color, Color conserva el color normal, y Hidden omite la forma en modo blanco y negro. NotDefined significa que no se ha asignado ningún modo a nivel de forma.
El siguiente código C++ crea una forma coloreada y hace que aparezca gris en modo de visualización en blanco y negro:
#include <DOM/BlackWhiteMode.h>
#include <DOM/FillType.h>
#include <DOM/IAutoShape.h>
#include <DOM/IFillFormat.h>
#include <DOM/IShapeCollection.h>
#include <DOM/ISlide.h>
#include <DOM/Presentation.h>
#include <DOM/ShapeType.h>
#include <Export/SaveFormat.h>
#include <drawing/color.h>
#include <system/smart_ptr.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System;
using namespace System::Drawing;
auto presentation = MakeObject<Presentation>();
auto slide = presentation->get_Slide(0);
auto shape = slide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 50, 50, 200, 100);
shape->get_FillFormat()->set_FillType(FillType::Solid);
shape->get_FillFormat()->get_SolidFillColor()->set_Color(Color::get_Orange());
// Mantener el relleno naranja en modo color, pero renderizar la forma con color gris en modo blanco y negro.
shape->set_BlackWhiteMode(BlackWhiteMode::Gray);
presentation->Save(u"shape_black_white_mode.pptx", SaveFormat::Pptx);
presentation->Dispose();
En modo de color normal, el rectángulo mantiene su relleno naranja. En un flujo de trabajo de visualización en blanco y negro, utiliza un color gris porque su modo está establecido a Gray. Esto permite conservar una diapositiva a todo color mientras se define una apariencia distinta para la impresión, la vista previa u otros flujos de trabajo que respetan la configuración de visualización en blanco y negro de la presentación.
Restablecer formato
El siguiente código C++ muestra cómo restablecer el formato de una diapositiva y revertir la posición, el tamaño y el formato de todas las formas con marcadores de posición en el LayoutSlide a sus configuraciones predeterminadas:
#include <DOM/ISlide.h>
#include <DOM/ISlideCollection.h>
#include <DOM/Presentation.h>
#include <Export/SaveFormat.h>
#include <system/enumerator_adapter.h>
#include <system/smart_ptr.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System;
auto presentation = MakeObject<Presentation>(u"sample.pptx");
for (auto&& slide : System::IterateOver(presentation->get_Slides()))
{
// Restablecer cada forma en la diapositiva que tiene un marcador de posición en el diseño.
slide->Reset();
}
presentation->Save(u"reset_formatting.pptx", SaveFormat::Pptx);
presentation->Dispose();
Preguntas frecuentes
¿Afecta el formato de las formas al tamaño final del archivo de la presentación?
Solo de forma mínima. Las imágenes y los archivos multimedia incrustados ocupan la mayor parte del espacio del archivo, mientras que los parámetros de las formas, como colores, efectos y degradados, se almacenan como metadatos y prácticamente no añaden tamaño extra.
¿Cómo puedo detectar formas en una diapositiva que comparten un formato idéntico para poder agruparlas?
Compara las propiedades clave de formato de cada forma —relleno, línea y configuraciones de efectos. Si todos los valores correspondientes coinciden, considera sus estilos como idénticos y agrupa lógicamente esas formas, lo que simplifica la gestión de estilos posterior.
¿Puedo guardar un conjunto de estilos de forma personalizados en un archivo separado para reutilizarlos en otras presentaciones?
Sí. Almacena formas de muestra con los estilos deseados en un conjunto de diapositivas de plantilla o en un archivo de plantilla .POTX. Al crear una nueva presentación, abre la plantilla, clona las formas con estilo que necesites y vuelve a aplicar su formato donde sea necesario.