Управление фонами презентаций в C++
Обзор
Сплошные цвета, градиенты и изображения часто используют в качестве фона слайда. Вы можете задать фон для обычного слайда (одного слайда) или макетного слайда (применяется к нескольким слайдам одновременно).

Задать сплошной цвет фона для обычного слайда
Aspose.Slides позволяет задать сплошной цвет в качестве фона для конкретного слайда в презентации — даже если презентация использует макетный слайд. Изменение применяется только к выбранному слайду.
- Создайте экземпляр класса Presentation.
- Задайте свойству слайда BackgroundType значение
OwnBackground. - Задайте свойству фона слайда FillType значение
Solid. - Вызовите метод get_SolidFillColor у FillFormat и укажите сплошной цвет фона.
- Сохраните изменённую презентацию.
Следующий пример на C++ показывает, как задать синий сплошной цвет в качестве фона обычного слайда:
// Создайте экземпляр класса Presentation.
auto presentation = MakeObject<Presentation>();
auto slide = presentation->get_Slide(0);
// Установите цвет фона слайда в синий.
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());
// Сохраните презентацию на диск.
presentation->Save(u"SolidColorBackground.pptx", SaveFormat::Pptx);
presentation->Dispose();
Задать сплошной цвет фона для макетного слайда
Aspose.Slides позволяет задать сплошной цвет в качестве фона для макетного слайда в презентации. Макетный слайд выступает шаблоном, который управляет форматированием всех слайдов, поэтому при выборе сплошного цвета для фона макетного слайда он применяется к каждому слайду.
- Создайте экземпляр класса Presentation.
- Задайте свойству макетного слайда BackgroundType (через
get_Masters) значениеOwnBackground. - Задайте свойству фона макетного слайда FillType значение
Solid. - Вызовите метод get_SolidFillColor и укажите сплошной цвет фона.
- Сохраните изменённую презентацию.
Следующий пример на C++ показывает, как задать сплошной цвет (лесной зелёный) в качестве фона макетного слайда:
// Создайте экземпляр класса Presentation.
auto presentation = MakeObject<Presentation>();
auto masterSlide = presentation->get_Master(0);
// Установите цвет фона для мастер‑слайда в лесной зелёный.
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());
// Сохраните презентацию на диск.
presentation->Save(u"MasterSlideBackground.pptx", SaveFormat::Pptx);
presentation->Dispose();
Задать градиентный фон для слайда
Градиент — это графический эффект, создаваемый постепённым изменением цвета. При использовании в качестве фона слайда градиенты могут сделать презентацию более художественной и профессиональной. Aspose.Slides позволяет задать градиентный цвет в качестве фона для слайдов.
- Создайте экземпляр класса Presentation.
- Задайте свойству слайда BackgroundType значение
OwnBackground. - Задайте свойству фона слайда FillType значение
Gradient. - Вызовите метод get_GradientFormat у FillFormat и настройте желаемые параметры градиента.
- Сохраните изменённую презентацию.
Следующий пример на C++ показывает, как задать градиентный цвет в качестве фона слайда:
// Создайте экземпляр класса Presentation.
auto presentation = MakeObject<Presentation>();
auto slide = presentation->get_Slide(0);
// Примените градиентный эффект к фону.
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);
// Сохраните презентацию на диск.
presentation->Save(u"GradientBackground.pptx", SaveFormat::Pptx);
presentation->Dispose();
Задать изображение в качестве фона слайда
Помимо сплошных и градиентных заливок, Aspose.Slides позволяет использовать изображения в качестве фона слайдов.
- Создайте экземпляр класса Presentation.
- Задайте свойству слайда BackgroundType значение
OwnBackground. - Задайте свойству фона слайда FillType значение
Picture. - Загрузите изображение, которое хотите использовать в качестве фона слайда.
- Добавьте изображение в коллекцию изображений презентации.
- Вызовите метод get_PictureFillFormat у FillFormat и присвойте изображение в качестве фона.
- Сохраните изменённую презентацию.
Следующий пример на C++ показывает, как задать изображение в качестве фона слайда:
// Создайте экземпляр класса Presentation.
auto presentation = MakeObject<Presentation>();
auto slide = presentation->get_Slide(0);
// Установите свойства фонового изображения.
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);
// Загрузите изображение.
auto image = Images::FromFile(u"Tulips.jpg");
// Добавьте изображение в коллекцию изображений презентации.
auto ppImage = presentation->get_Images()->AddImage(image);
image->Dispose();
slide->get_Background()->get_FillFormat()->get_PictureFillFormat()->get_Picture()->set_Image(ppImage);
// Save the presentation to disk.
presentation->Save(u"ImageAsBackground.pptx", SaveFormat::Pptx);
presentation->Dispose();
Следующий образец кода показывает, как задать тип заливки фона в виде мозаичного изображения и изменить свойства мозаики:
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();
Изменить прозрачность фонового изображения
Возможно, вам понадобится отрегулировать прозрачность фонового изображения слайда, чтобы выделить содержимое слайда. Следующий код на C++ показывает, как изменить прозрачность фонового изображения слайда:
auto transparencyValue = 30; // Например.
// Получить коллекцию операций трансформации изображения.
auto imageTransform = slide->get_Background()->get_FillFormat()->get_PictureFillFormat()->get_Picture()->get_ImageTransform();
// Найти существующий эффект прозрачности с фиксированным процентом.
SharedPtr<IAlphaModulateFixed> transparencyOperation;
for (auto&& operation : imageTransform)
{
if (ObjectExt::Is<IAlphaModulateFixed>(operation))
{
transparencyOperation = ExplicitCast<IAlphaModulateFixed>(operation);
break;
}
}
// Установить новое значение прозрачности.
if (transparencyOperation == nullptr)
{
imageTransform->AddAlphaModulateFixedEffect(100.0f - transparencyValue);
}
else
{
transparencyOperation->set_Amount(100.0f - transparencyValue);
}
Получить значение фона слайда
Aspose.Slides предоставляет интерфейс IBackgroundEffectiveData для получения эффективных значений фона слайда. Этот интерфейс раскрывает эффективный FillFormat и EffectFormat.
С помощью метода get_Background класса BaseSlide вы можете получить эффективный фон для слайда.
Следующий пример на C++ показывает, как получить эффективное значение фона слайда:
// Создайте экземпляр класса Presentation.
auto presentation = MakeObject<Presentation>(u"Sample.pptx");
auto slide = presentation->get_Slide(0);
// Retrieve the effective background, taking into account master, layout, and theme.
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
Можно ли сбросить пользовательский фон и восстановить фон из темы/макета?
Да. Удалите пользовательскую заливку слайда, и фон будет вновь получен от соответствующего layout/master слайда (то есть от theme background).
Что произойдёт с фоном, если я позже изменю тему презентации?
Если у слайда есть собственная заливка, она останется неизменной. Если фон наследуется от layout/master, он обновится в соответствии с new theme.