Formattare forme PowerPoint in C++
Introduzione
In PowerPoint, è possibile aggiungere forme alle diapositive. Poiché le forme sono composte da linee, è possibile formattarle modificando o applicando effetti ai loro contorni. Inoltre, è possibile formattare le forme specificando impostazioni che controllano come vengono riempiti i loro interni.

Aspose.Slides per C++ fornisce interfacce e metodi che consentono di formattare le forme utilizzando le stesse opzioni disponibili in PowerPoint.
Formattare le linee
Utilizzando Aspose.Slides, è possibile specificare uno stile di linea personalizzato per una forma. I passaggi seguenti descrivono la procedura:
- Creare un’istanza della classe Presentation.
- Ottenere un riferimento a una diapositiva per indice.
- Aggiungere un IAutoShape alla diapositiva.
- Impostare lo stile di linea della forma.
- Impostare lo spessore della linea.
- Impostare lo stile tratteggiato della linea.
- Impostare il colore della linea per la forma.
- Salvare la presentazione modificata come file PPTX.
Il codice seguente dimostra come formattare un AutoShape rettangolare:
#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;
// Instanzia la classe Presentation che rappresenta un file di presentazione.
auto presentation = MakeObject<Presentation>();
// Ottieni la prima diapositiva.
auto slide = presentation->get_Slide(0);
// Aggiungi una forma automatica di tipo Rettangolo.
auto shape = slide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 50, 150, 150, 75);
// Imposta il colore di riempimento per la forma rettangolo.
shape->get_FillFormat()->set_FillType(FillType::NoFill);
// Applica la formattazione alle linee del rettangolo.
shape->get_LineFormat()->set_Style(LineStyle::ThickThin);
shape->get_LineFormat()->set_Width(7);
shape->get_LineFormat()->set_DashStyle(LineDashStyle::Dash);
// Imposta il colore per la linea del rettangolo.
shape->get_LineFormat()->get_FillFormat()->set_FillType(FillType::Solid);
shape->get_LineFormat()->get_FillFormat()->get_SolidFillColor()->set_Color(Color::get_Blue());
// Salva il file PPTX su disco.
presentation->Save(u"formatted_lines.pptx", SaveFormat::Pptx);
presentation->Dispose();
Il risultato:

Applicare effetti sketch alle linee della forma
Un effetto sketch rende la linea di una forma simile a un disegno a mano libera. Utilizzare IShape::get_LineFormat per accedere alle impostazioni della linea, ILineFormat::get_SketchFormat per accedere alle impostazioni dello sketch e ISketchFormat::set_SketchType per selezionare un valore dall’enumerazione LineSketchType.
Il codice C++ seguente mostra come applicare l’effetto LineSketchType::Curved, leggere il valore assegnato esplicitamente e rimuovere l’effetto 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();
Il valore restituito da ISketchFormat::get_SketchType rappresenta l’impostazione assegnata direttamente alla forma. Se la formattazione della linea può essere ereditata da un tema, da una diapositiva master o da una diapositiva layout, utilizzare ILineFormat::GetEffective, accedere a ILineFormatEffectiveData::get_SketchFormat e leggere ISketchFormatEffectiveData::get_SketchType. Il valore effettivo riflette la formattazione effettivamente applicata dopo la risoluzione dell’ereditarietà:
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();
Formattare gli stili di giunzione
Ecco le tre opzioni di tipo di giunzione:
- Round
- Miter
- Bevel
Per impostazione predefinita, quando PowerPoint unisce due linee a un angolo (ad esempio all’angolo di una forma), utilizza l’impostazione Round. Tuttavia, se si disegna una forma con angoli affilati, potrebbe essere preferita l’opzione Miter.

Il codice C++ seguente dimostra come sono stati creati tre rettangoli (come mostrato nell’immagine sopra) utilizzando le impostazioni di tipo di giunzione Miter, Bevel e 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;
// Istanzia la classe Presentation che rappresenta un file di presentazione.
auto presentation = MakeObject<Presentation>();
// Ottieni la prima diapositiva.
auto slide = presentation->get_Slide(0);
// Aggiungi tre forme automatiche di tipo Rettangolo.
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);
// Imposta il colore di riempimento per ogni forma rettangolare.
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());
// Imposta lo spessore della linea.
shape1->get_LineFormat()->set_Width(15);
shape2->get_LineFormat()->set_Width(15);
shape3->get_LineFormat()->set_Width(15);
// Imposta il colore per la linea di ogni rettangolo.
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());
// Imposta lo stile di giunzione.
shape1->get_LineFormat()->set_JoinStyle(LineJoinStyle::Miter);
shape2->get_LineFormat()->set_JoinStyle(LineJoinStyle::Bevel);
shape3->get_LineFormat()->set_JoinStyle(LineJoinStyle::Round);
// Aggiungi testo a ogni rettangolo.
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");
// Salva il file PPTX su disco.
presentation->Save(u"join_styles.pptx", SaveFormat::Pptx);
presentation->Dispose();
Riempimento gradiente
In PowerPoint, il Riempimento gradiente è un’opzione di formattazione che consente di applicare una sfumatura continua di colori a una forma. Ad esempio, è possibile applicare due o più colori in modo che uno sfumi gradualmente nell’altro.
Ecco come applicare un riempimento gradiente a una forma usando Aspose.Slides:
- Creare un’istanza della classe Presentation.
- Ottenere un riferimento a una diapositiva per indice.
- Aggiungere un IAutoShape alla diapositiva.
- Impostare il FillType della forma su
Gradient. - Aggiungere i due colori preferiti con posizioni definite usando i metodi
Adddella raccolta di stop del gradiente esposta dall’interfaccia IGradientFormat. - Salvare la presentazione modificata come file PPTX.
Il codice C++ seguente dimostra come applicare un effetto di riempimento gradiente a un’ellisse:
#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;
// Istanzia la classe Presentation che rappresenta un file di presentazione.
auto presentation = MakeObject<Presentation>();
// Ottieni la prima diapositiva.
auto slide = presentation->get_Slide(0);
// Aggiungi una forma automatica di tipo Ellisse.
auto shape = slide->get_Shapes()->AddAutoShape(ShapeType::Ellipse, 50, 50, 150, 75);
// Applica la formattazione a gradiente all'ellisse.
shape->get_FillFormat()->set_FillType(FillType::Gradient);
shape->get_FillFormat()->get_GradientFormat()->set_GradientShape(GradientShape::Linear);
// Imposta la direzione del gradiente.
shape->get_FillFormat()->get_GradientFormat()->set_GradientDirection(GradientDirection::FromCorner2);
// Aggiungi due fermate del gradiente.
shape->get_FillFormat()->get_GradientFormat()->get_GradientStops()->Add(1.0f, PresetColor::Purple);
shape->get_FillFormat()->get_GradientFormat()->get_GradientStops()->Add(0.0f, PresetColor::Red);
// Salva il file PPTX su disco.
presentation->Save(u"gradient_fill.pptx", SaveFormat::Pptx);
presentation->Dispose();
Il risultato:

Riempimento a motivo
In PowerPoint, il Riempimento a motivo è un’opzione di formattazione che consente di applicare un disegno bicolore — ad esempio punti, strisce, tratteggi incrociati o quadretti — a una forma. È possibile scegliere colori personalizzati per il primo piano e lo sfondo del motivo.
Aspose.Slides fornisce oltre 45 stili di motivo predefiniti che è possibile applicare alle forme per migliorare l’aspetto visivo delle presentazioni. Anche dopo aver selezionato un motivo predefinito, è ancora possibile specificare i colori esatti da utilizzare.
Ecco come applicare un riempimento a motivo a una forma usando Aspose.Slides:
- Creare un’istanza della classe Presentation.
- Ottenere un riferimento a una diapositiva per indice.
- Aggiungere un IAutoShape alla diapositiva.
- Impostare il FillType della forma su
Pattern. - Scegliere uno stile di motivo dalle opzioni predefinite.
- Impostare il Background Color del motivo.
- Impostare il Foreground Color del motivo.
- Salvare la presentazione modificata come file PPTX.
Il codice C++ seguente dimostra come applicare un riempimento a motivo a un rettangolo:
#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;
// Istanzia la classe Presentation che rappresenta un file di presentazione.
auto presentation = MakeObject<Presentation>();
// Ottieni la prima diapositiva.
auto slide = presentation->get_Slide(0);
// Aggiungi una forma automatica di tipo Rectangle.
auto shape = slide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 50, 50, 150, 75);
// Imposta il tipo di riempimento su Pattern.
shape->get_FillFormat()->set_FillType(FillType::Pattern);
// Imposta lo stile del motivo.
shape->get_FillFormat()->get_PatternFormat()->set_PatternStyle(PatternStyle::Trellis);
// Imposta i colori di sfondo e di primo piano del motivo.
shape->get_FillFormat()->get_PatternFormat()->get_BackColor()->set_Color(Color::get_LightGray());
shape->get_FillFormat()->get_PatternFormat()->get_ForeColor()->set_Color(Color::get_Yellow());
// Salva il file PPTX su disco.
presentation->Save(u"pattern_fill.pptx", SaveFormat::Pptx);
presentation->Dispose();
Il risultato:

Riempimento immagine
In PowerPoint, il Riempimento immagine è un’opzione di formattazione che consente di inserire un’immagine all’interno di una forma, utilizzandola effettivamente come sfondo della forma.
Ecco come utilizzare Aspose.Slides per applicare un riempimento immagine a una forma:
- Creare un’istanza della classe Presentation.
- Ottenere un riferimento a una diapositiva per indice.
- Aggiungere un IAutoShape alla diapositiva.
- Impostare il FillType della forma su
Picture. - Impostare la modalità di riempimento immagine su
Tile(o un’altra modalità preferita). - Creare un oggetto IPPImage dall’immagine da utilizzare.
- Passare l’immagine al metodo
ISlidesPicture.set_Image. - Salvare la presentazione modificata come file PPTX.
Supponiamo di avere un file “lotus.png” con l’immagine seguente:

Il codice C++ seguente dimostra come riempire una forma con l’immagine:
#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;
// Istanzia la classe Presentation che rappresenta un file di presentazione.
auto presentation = MakeObject<Presentation>();
// Ottieni la prima diapositiva.
auto slide = presentation->get_Slide(0);
// Aggiungi una forma automatica di tipo Rectangle.
auto shape = slide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 50, 50, 255, 130);
// Imposta il tipo di riempimento su Picture.
shape->get_FillFormat()->set_FillType(FillType::Picture);
// Imposta la modalità di riempimento immagine.
shape->get_FillFormat()->get_PictureFillFormat()->set_PictureFillMode(PictureFillMode::Tile);
// Carica un'immagine e aggiungila alle risorse della presentazione.
auto image = Images::FromFile(u"lotus.png");
auto picture = presentation->get_Images()->AddImage(image);
image->Dispose();
// Imposta l'immagine.
shape->get_FillFormat()->get_PictureFillFormat()->get_Picture()->set_Image(picture);
// Salva il file PPTX su disco.
presentation->Save(u"picture_fill.pptx", SaveFormat::Pptx);
presentation->Dispose();
Il risultato:

Affiancare immagine come trama
Se si desidera impostare un’immagine affiancata come trama e personalizzare il comportamento del mosaico, è possibile utilizzare i seguenti metodi dell’interfaccia IPictureFillFormat e della classe PictureFillFormat:
- set_PictureFillMode: Imposta la modalità di riempimento immagine —
TileoStretch. - set_TileAlignment: Specifica l’allineamento delle tessere all’interno della forma.
- set_TileFlip: Controlla se la tessera è capovolta orizzontalmente, verticalmente o in entrambi i sensi.
- set_TileOffsetX: Imposta lo spostamento orizzontale della tessera (in punti) dall’origine della forma.
- set_TileOffsetY: Imposta lo spostamento verticale della tessera (in punti) dall’origine della forma.
- set_TileScaleX: Definisce la scala orizzontale della tessera in percentuale.
- set_TileScaleY: Definisce la scala verticale della tessera in percentuale.
Il seguente esempio di codice mostra come aggiungere una forma rettangolare con riempimento immagine affiancato e configurare le opzioni del 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;
// Istanzia la classe Presentation che rappresenta un file di presentazione.
auto presentation = MakeObject<Presentation>();
// Ottieni la prima diapositiva.
auto firstSlide = presentation->get_Slide(0);
// Aggiungi una forma automatica di tipo rettangolo.
auto shape = firstSlide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 50, 50, 190, 95);
// Imposta il tipo di riempimento della forma su Picture.
shape->get_FillFormat()->set_FillType(FillType::Picture);
// Carica l'immagine e aggiungila alle risorse della presentazione.
auto sourceImage = Images::FromFile(u"lotus.png");
auto presentationImage = presentation->get_Images()->AddImage(sourceImage);
sourceImage->Dispose();
// Assegna l'immagine alla forma.
auto pictureFillFormat = shape->get_FillFormat()->get_PictureFillFormat();
pictureFillFormat->get_Picture()->set_Image(presentationImage);
// Configura la modalità di riempimento immagine e le proprietà di 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);
// Salva il file PPTX su disco.
presentation->Save(u"tile.pptx", SaveFormat::Pptx);
presentation->Dispose();
Il risultato:

Riempimento a tinta unita
In PowerPoint, il Riempimento a tinta unita è un’opzione di formattazione che riempie una forma con un unico colore uniforme. Questo colore di sfondo piatto viene applicato senza sfumature, trame o motivi.
Per applicare un riempimento a tinta unita a una forma usando Aspose.Slides, seguire questi passaggi:
- Creare un’istanza della classe Presentation.
- Ottenere un riferimento a una diapositiva per indice.
- Aggiungere un IAutoShape alla diapositiva.
- Impostare il FillType della forma su
Solid. - Assegnare il colore di riempimento desiderato alla forma.
- Salvare la presentazione modificata come file PPTX.
Il codice C++ seguente dimostra come applicare un riempimento a tinta unita a un rettangolo in una diapositiva PowerPoint:
#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;
// Istanzia la classe Presentation che rappresenta un file di presentazione.
auto presentation = MakeObject<Presentation>();
// Ottieni la prima diapositiva.
auto slide = presentation->get_Slide(0);
// Aggiungi una forma automatica di tipo Rectangle.
auto shape = slide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 50, 50, 150, 75);
// Imposta il tipo di riempimento su Solid.
shape->get_FillFormat()->set_FillType(FillType::Solid);
// Imposta il colore di riempimento.
shape->get_FillFormat()->get_SolidFillColor()->set_Color(Color::get_Yellow());
// Salva il file PPTX su disco.
presentation->Save(u"solid_color_fill.pptx", SaveFormat::Pptx);
presentation->Dispose();
Il risultato:

Impostare la trasparenza
In PowerPoint, quando si applica un riempimento solido, gradiente, immagine o trama a forme, è possibile impostare anche un livello di trasparenza per controllare l’opacità del riempimento. Un valore di trasparenza più alto rende la forma più trasparente, consentendo allo sfondo o agli oggetti sottostanti di essere parzialmente visibili.
Aspose.Slides consente di impostare il livello di trasparenza modificando il valore alpha nel colore usato per il riempimento. Ecco come fare:
- Creare un’istanza della classe Presentation.
- Ottenere un riferimento a una diapositiva per indice.
- Aggiungere un IAutoShape alla diapositiva.
- Impostare il FillType su
Solid. - Usare
Colorper definire un colore con trasparenza (il componentealphacontrolla la trasparenza). - Salvare la presentazione.
Il codice C++ seguente dimostra come applicare un colore di riempimento trasparente a un rettangolo:
#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;
// Istanzia la classe Presentation che rappresenta un file di presentazione.
auto presentation = MakeObject<Presentation>();
// Ottieni la prima diapositiva.
auto slide = presentation->get_Slide(0);
// Aggiungi una forma automatica rettangolare solida.
auto solidShape = slide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 50, 50, 150, 75);
// Aggiungi una forma automatica rettangolare trasparente sopra la forma solida.
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));
// Salva il file PPTX su disco.
presentation->Save(u"shape_transparency.pptx", SaveFormat::Pptx);
presentation->Dispose();
Il risultato:

Ruotare le forme
Aspose.Slides consente di ruotare le forme nelle presentazioni PowerPoint. Questo può essere utile quando si posizionano elementi visivi con requisiti specifici di allineamento o design.
Per ruotare una forma su una diapositiva, seguire questi passaggi:
- Creare un’istanza della classe Presentation.
- Ottenere un riferimento a una diapositiva per indice.
- Aggiungere un IAutoShape alla diapositiva.
- Impostare la proprietà di rotazione della forma sull’angolo desiderato.
- Salvare la presentazione.
Il codice C++ seguente dimostra come ruotare una forma di 5 gradi:
#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;
// Istanzia la classe Presentation che rappresenta un file di presentazione.
auto presentation = MakeObject<Presentation>();
// Ottieni la prima diapositiva.
auto slide = presentation->get_Slide(0);
// Aggiungi una forma automatica di tipo Rectangle.
auto shape = slide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 50, 50, 150, 75);
// Ruota la forma di 5 gradi.
shape->set_Rotation(5);
// Salva il file PPTX su disco.
presentation->Save(u"shape_rotation.pptx", SaveFormat::Pptx);
presentation->Dispose();
Il risultato:

Aggiungere effetti di smusso 3D
Aspose.Slides consente di applicare effetti di smusso 3D alle forme configurando le proprietà del loro ThreeDFormat.
Per aggiungere effetti di smusso 3D a una forma, seguire questi passaggi:
- Istanziate la classe Presentation.
- Ottenete un riferimento a una diapositiva per indice.
- Aggiungete un IAutoShape alla diapositiva.
- Configurate il ThreeDFormat della forma per definire le impostazioni di smusso.
- Salvate la presentazione.
Il codice C++ seguente mostra come applicare effetti di smusso 3D a una forma:
#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;
// Crea un'istanza della classe Presentation.
auto presentation = MakeObject<Presentation>();
auto slide = presentation->get_Slide(0);
// Aggiungi una forma alla 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);
// Imposta le proprietà ThreeDFormat della 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);
// Salva la presentazione come file PPTX.
presentation->Save(u"3D_bevel_effect.pptx", SaveFormat::Pptx);
presentation->Dispose();
Il risultato:

Aggiungere effetti di rotazione 3D
Aspose.Slides consente di applicare effetti di rotazione 3D alle forme configurando le loro proprietà ThreeDFormat.
Per applicare la rotazione 3D a una forma:
- Creare un’istanza della classe Presentation.
- Ottenere un riferimento a una diapositiva per indice.
- Aggiungere un IAutoShape alla diapositiva.
- Utilizzare set_CameraType e set_LightType per definire la rotazione 3D.
- Salvare la presentazione.
Il codice C++ seguente dimostra come applicare effetti di rotazione 3D a una forma:
#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;
// Crea un'istanza della classe 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);
// Salva la presentazione come file PPTX.
presentation->Save(u"3D_rotation_effect.pptx", SaveFormat::Pptx);
presentation->Dispose();
Il risultato:

Controllare il rendering in bianco e nero per le forme
Il metodo IShape::set_BlackWhiteMode specifica come una singola forma viene renderizzata quando una presentazione è visualizzata o elaborata in modalità bianco e nero. Non abilita la visualizzazione in bianco e nero di per sé e non modifica il riempimento, la linea o altra formattazione della forma nella modalità colore normale.
Utilizzare un valore dell’enumerazione BlackWhiteMode per selezionare il comportamento desiderato. Ad esempio, Automatic consente all’applicazione di rendering di scegliere la conversione, Gray e LightGray usano la colorazione grigia, BlackWhite utilizza solo nero e bianco, Black e White forzano un colore singolo, Color preserva la colorazione normale e Hidden omette la forma in modalità bianco e nero. NotDefined significa che non è stato assegnato alcun modo a livello di forma.
Il codice C++ seguente crea una forma colorata e la fa apparire grigia nella modalità di visualizzazione bianco e nero:
#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());
// Mantieni il riempimento arancione in modalità colore, ma visualizza la forma con colorazione grigia in modalità bianco e nero.
shape->set_BlackWhiteMode(BlackWhiteMode::Gray);
presentation->Save(u"shape_black_white_mode.pptx", SaveFormat::Pptx);
presentation->Dispose();
In modalità colore normale, il rettangolo mantiene il riempimento arancione. In un flusso di lavoro di visualizzazione bianco e nero, utilizza la colorazione grigia perché il suo modo è impostato su Gray. Questo consente di preservare una diapositiva a colori completa definendo al contempo un aspetto distinto per la stampa, l’anteprima o altri flussi di lavoro che rispettano le impostazioni di visualizzazione bianco e nero della presentazione.
Ripristinare la formattazione
Il seguente codice C++ mostra come ripristinare la formattazione di una diapositiva e riportare posizione, dimensione e formattazione di tutte le forme con segnaposto sulla LayoutSlide ai loro valori predefiniti:
#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()))
{
// Reimposta ogni forma sulla diapositiva che ha un segnaposto sul layout.
slide->Reset();
}
presentation->Save(u"reset_formatting.pptx", SaveFormat::Pptx);
presentation->Dispose();
FAQ
La formattazione delle forme influisce sulla dimensione finale del file della presentazione?
Solo in minima parte. Le immagini e i media incorporati occupano la maggior parte dello spazio del file, mentre i parametri delle forme come colori, effetti e gradienti sono memorizzati come metadati e aggiungono praticamente nessuna dimensione extra.
Come posso individuare le forme su una diapositiva che condividono la stessa formattazione per raggrupparle?
Confrontare le proprietà chiave di formattazione di ciascuna forma — riempimento, linea e impostazioni degli effetti. Se tutti i valori corrispondenti coincidono, trattare i loro stili come identici e raggruppare logicamente quelle forme, semplificando successivamente la gestione degli stili.
Posso salvare un set di stili di forma personalizzati in un file separato per riutilizzarlo in altre presentazioni?
Sì. Conservare le forme di esempio con gli stili desiderati in un modello di presentazione o in un file modello .POTX. Quando si crea una nuova presentazione, aprire il modello, clonare le forme stilizzate necessarie e riapplicare la loro formattazione dove richiesto.