Gerenciar Fundos de Apresentação em C++

Introdução

Cores sólidas, gradientes e imagens são comumente usadas como fundos de slide. Você pode definir o fundo para um slide normal (um único slide) ou um slide mestre (aplicado a vários slides ao mesmo tempo).

Fundo do PowerPoint

Definir um fundo de cor sólida para um slide normal

Aspose.Slides permite definir uma cor sólida como fundo de um slide específico em uma apresentação — mesmo que a apresentação use um slide mestre. A alteração se aplica apenas ao slide selecionado.

  1. Crie uma instância da classe Presentation.
  2. Defina o BackgroundType do slide como OwnBackground.
  3. Defina o FillType do fundo do slide como Solid.
  4. Use o método get_SolidFillColor em FillFormat para especificar a cor de fundo sólida.
  5. Salve a apresentação modificada.

O exemplo C++ a seguir mostra como definir uma cor sólida azul como fundo de um slide normal:

// Crie uma instância da classe Presentation.
auto presentation = MakeObject<Presentation>();

auto slide = presentation->get_Slide(0);

// Defina a cor de fundo do slide como azul.
slide->get_Background()->set_Type(BackgroundType::OwnBackground);
slide->get_Background()->get_FillFormat()->set_FillType(FillType::Solid);
slide->get_Background()->get_FillFormat()->get_SolidFillColor()->set_Color(Color::get_Blue());

// Salve a apresentação no disco.
presentation->Save(u"SolidColorBackground.pptx", SaveFormat::Pptx);
presentation->Dispose();

Definir um fundo de cor sólida para um slide mestre

Aspose.Slides permite definir uma cor sólida como fundo do slide mestre em uma apresentação. O slide mestre atua como um modelo que controla a formatação de todos os slides, portanto, ao escolher uma cor sólida para o fundo do slide mestre, ela será aplicada a cada slide.

  1. Crie uma instância da classe Presentation.
  2. Defina o BackgroundType do slide mestre (via get_Masters) como OwnBackground.
  3. Defina o FillType do fundo do slide mestre como Solid.
  4. Use o método get_SolidFillColor para especificar a cor de fundo sólida.
  5. Salve a apresentação modificada.

O exemplo C++ a seguir mostra como definir uma cor sólida (verde floresta) como fundo de um slide mestre:

// Crie uma instância da classe Presentation.
auto presentation = MakeObject<Presentation>();

auto masterSlide = presentation->get_Master(0);

// Defina a cor de fundo do slide Mestre como Verde Floresta.
masterSlide->get_Background()->set_Type(BackgroundType::OwnBackground);
masterSlide->get_Background()->get_FillFormat()->set_FillType(FillType::Solid);
masterSlide->get_Background()->get_FillFormat()->get_SolidFillColor()->set_Color(Color::get_ForestGreen());

// Salve a apresentação no disco.
presentation->Save(u"MasterSlideBackground.pptx", SaveFormat::Pptx);
presentation->Dispose();

Definir um fundo gradiente para um slide

Um gradiente é um efeito gráfico criado por uma mudança gradual de cor. Quando usado como fundo de slide, gradientes podem tornar as apresentações mais artísticas e profissionais. Aspose.Slides permite definir uma cor gradiente como fundo dos slides.

  1. Crie uma instância da classe Presentation.
  2. Defina o BackgroundType do slide como OwnBackground.
  3. Defina o FillType do fundo do slide como Gradient.
  4. Use o método get_GradientFormat em FillFormat para configurar as opções de gradiente desejadas.
  5. Salve a apresentação modificada.

O exemplo C++ a seguir mostra como definir uma cor gradiente como fundo de um slide:

// Crie uma instância da classe Presentation.
auto presentation = MakeObject<Presentation>();

auto slide = presentation->get_Slide(0);

// Aplique um efeito de gradiente ao fundo.
slide->get_Background()->set_Type(BackgroundType::OwnBackground);
slide->get_Background()->get_FillFormat()->set_FillType(FillType::Gradient);
slide->get_Background()->get_FillFormat()->get_GradientFormat()->set_TileFlip(TileFlip::FlipBoth);

// Salve a apresentação no disco.
presentation->Save(u"GradientBackground.pptx", SaveFormat::Pptx);
presentation->Dispose();

Definir uma imagem como fundo de slide

Além de preenchimentos sólidos e gradientes, Aspose.Slides permite usar imagens como fundos de slide.

  1. Crie uma instância da classe Presentation.
  2. Defina o BackgroundType do slide como OwnBackground.
  3. Defina o FillType do fundo do slide como Picture.
  4. Carregue a imagem que você deseja usar como fundo do slide.
  5. Adicione a imagem à coleção de imagens da apresentação.
  6. Use o método get_PictureFillFormat em FillFormat para atribuir a imagem como fundo.
  7. Salve a apresentação modificada.

O exemplo C++ a seguir mostra como definir uma imagem como fundo de um slide:

// Crie uma instância da classe Presentation.
auto presentation = MakeObject<Presentation>();

auto slide = presentation->get_Slide(0);

// Defina as propriedades da imagem de fundo.
slide->get_Background()->set_Type(BackgroundType::OwnBackground);
slide->get_Background()->get_FillFormat()->set_FillType(FillType::Picture);
slide->get_Background()->get_FillFormat()->get_PictureFillFormat()->set_PictureFillMode(PictureFillMode::Stretch);

// Carregue a imagem.
auto image = Images::FromFile(u"Tulips.jpg");
// Adicione a imagem à coleção de imagens da apresentação.
auto ppImage = presentation->get_Images()->AddImage(image);
image->Dispose();

slide->get_Background()->get_FillFormat()->get_PictureFillFormat()->get_Picture()->set_Image(ppImage);

// Salve a apresentação no disco.
presentation->Save(u"ImageAsBackground.pptx", SaveFormat::Pptx);
presentation->Dispose();

O exemplo de código a seguir mostra como definir o tipo de preenchimento de fundo como uma imagem em ladrilhos e modificar as propriedades de ladrilhamento:

auto presentation = MakeObject<Presentation>();

auto firstSlide = presentation->get_Slide(0);

auto background = firstSlide->get_Background();

background->set_Type(BackgroundType::OwnBackground);
background->get_FillFormat()->set_FillType(FillType::Picture);

auto newImage = Images::FromFile(u"image.png");
auto ppImage = presentation->get_Images()->AddImage(newImage);
newImage->Dispose();

// Set the image used for the background fill.
auto backPictureFillFormat = background->get_FillFormat()->get_PictureFillFormat();
backPictureFillFormat->get_Picture()->set_Image(ppImage);

// Set the picture fill mode to Tile and adjust the tile properties.
backPictureFillFormat->set_PictureFillMode(PictureFillMode::Tile);
backPictureFillFormat->set_TileOffsetX(15.0);
backPictureFillFormat->set_TileOffsetY(15.0);
backPictureFillFormat->set_TileScaleX(46.0);
backPictureFillFormat->set_TileScaleY(87.0);
backPictureFillFormat->set_TileAlignment(RectangleAlignment::Center);
backPictureFillFormat->set_TileFlip(TileFlip::FlipY);

presentation->Save(u"TileBackground.pptx", SaveFormat::Pptx);
presentation->Dispose();

Alterar a transparência da imagem de fundo

Você pode querer ajustar a transparência da imagem de fundo de um slide para que o conteúdo do slide se destaque. O código C++ a seguir mostra como alterar a transparência da imagem de fundo de um slide:

auto transparencyValue = 30; // Por exemplo.

// Get the collection of picture transform operations.
auto imageTransform = slide->get_Background()->get_FillFormat()->get_PictureFillFormat()->get_Picture()->get_ImageTransform();

// Find an existing fixed-percentage transparency effect.
SharedPtr<IAlphaModulateFixed> transparencyOperation;
for (auto&& operation : imageTransform)
{
    if (ObjectExt::Is<IAlphaModulateFixed>(operation))
    {
        transparencyOperation = ExplicitCast<IAlphaModulateFixed>(operation);
        break;
    }
}

// Set the new transparency value.
if (transparencyOperation == nullptr)
{
    imageTransform->AddAlphaModulateFixedEffect(100.0f - transparencyValue);
}
else
{
    transparencyOperation->set_Amount(100.0f - transparencyValue);
}

Obter o valor de fundo do slide

Aspose.Slides fornece a interface IBackgroundEffectiveData para recuperar os valores efetivos do fundo de um slide. Essa interface expõe o FillFormat e o EffectFormat efetivos.

Usando o método get_Background da classe BaseSlide, você pode obter o fundo efetivo de um slide.

O exemplo C++ a seguir mostra como obter o valor efetivo do fundo de um slide:

// Crie uma instância da classe Presentation.
auto presentation = MakeObject<Presentation>(u"Sample.pptx");

auto slide = presentation->get_Slide(0);

// Recupere o fundo efetivo, levando em conta mestre, layout e tema.
auto effBackground = slide->get_Background()->GetEffective();

if (effBackground->get_FillFormat()->get_FillType() == FillType::Solid)
{
    Console::WriteLine(u"Fill color: {0}", effBackground->get_FillFormat()->get_SolidFillColor());
}
else
{
    Console::WriteLine(u"Fill type: {0}", ObjectExt::ToString(effBackground->get_FillFormat()->get_FillType()));
}

FAQ

Posso redefinir um fundo personalizado e restaurar o fundo do tema/layout?

Sim. Remova o preenchimento personalizado do slide e o fundo será novamente herdado do slide de layout/master correspondente (ou seja, o fundo do tema).

O que acontece com o fundo se eu mudar o tema da apresentação mais tarde?

Se um slide tem seu próprio preenchimento, ele permanecerá inalterado. Se o fundo for herdado do layout/master, ele será atualizado para corresponder ao novo tema.