Beheer presentatieslide‑masters in C++

Overzicht

Een slide‑master definieert gedeelde ontwerpinstellingen voor een groep dia’s. Hij kan gemeenschappelijke vormen, logo’s, achtergronden, tekststijlen, themainstellingen en voetteksten bevatten. In PowerPoint is het bewerken van een slide‑master de gebruikelijke manier om een presentatie consistent te houden zonder dezelfde opmaak op elke dia te herhalen.

Aspose.Slides voor C++ ondersteunt hetzelfde model. Een presentatie kan één of meerdere master‑dia’s bevatten, en elke master‑dia kan verschillende lay-out‑dia’s bevatten. Normale dia’s verwijzen doorgaans niet rechtstreeks naar een master‑dia. In plaats daarvan gebruikt een normale dia een lay-out‑dia, en die lay-out‑dia behoort tot een master‑dia.

De hiërarchie is:

  1. Slide master – definieert het gedeelde ontwerp en thema.
  2. Layout slide – definieert een specifieke rangschikking van tijdelijke aanduidingen en opmaak op lay-outniveau.
  3. Normal slide – bevat de feitelijke presentatiewaarde en gebruikt één lay‑out‑dia.

The hierarchy of master slides, layout slides, and normal slides

In Aspose.Slides wordt een slide‑master weergegeven door de interface IMasterSlide. Alle master‑dia’s in een presentatie zijn beschikbaar via de collectie Presentation::get_Masters, die IMasterSlideCollection implementeert.

Toegang tot Slide Masters

In PowerPoint kun je de slide‑masterweergave openen via Beeld > Slide Master.

The Slide Master command on the PowerPoint View tab

In Aspose.Slides gebruik je de collectie get_Masters() om master‑dia’s te benaderen:

auto presentation = System::MakeObject<Presentation>(u"presentation.pptx");

auto firstMasterSlide = presentation->get_Master(0);
auto masterSlideCount = presentation->get_Masters()->get_Count();
auto firstMasterLayoutSlideCount = firstMasterSlide->get_LayoutSlides()->get_Count();

System::Console::WriteLine(System::String(u"Master slides: ") + masterSlideCount);
System::Console::WriteLine(System::String(u"Layouts in the first master: ") + firstMasterLayoutSlideCount);

presentation->Dispose();

Je kunt ook de master‑dia ophalen die door een normale dia wordt gebruikt via zijn lay‑out:

auto presentation = System::MakeObject<Presentation>(u"presentation.pptx");

auto slide = presentation->get_Slide(0);
auto layoutSlide = slide->get_LayoutSlide();
auto masterSlide = layoutSlide->get_MasterSlide();
auto masterSlideName = masterSlide->get_Name();

System::Console::WriteLine(masterSlideName);

presentation->Dispose();

Wat een Slide Master Bevat

Een master‑dia is een dia‑achtig object. Hij implementeert IBaseSlide, zodat hij veel van dezelfde dia‑eigenschappen blootlegt die door normale en lay‑out‑dia’s worden gebruikt. Master‑specifieke leden staan opgesomd op de API‑pagina van IMasterSlide.

Veelgebruikte master‑dia‑leden zijn onder andere:

Lid Doel
get_Background() Stelt de master‑niveau dia‑achtergrond in.
get_Shapes() Bevat vormen die op de master zijn geplaatst, zoals logo’s, afbeeldingsframes en gedeelde tekst.
get_LayoutSlides() Bevat de lay‑out‑dia’s die tot de master behoren.
get_ThemeManager() Biedt toegang tot de master‑thema‑API’s.
get_HeaderFooterManager() Beheert kop‑ en voetteksten, datum‑ en dia‑nummers voor de master en de bijbehorende lay‑outs.
GetDependingSlides() Retourneert normale dia’s die via hun lay‑outs afhankelijk zijn van de master.

Een Afbeelding Toevoegen aan een Slide Master

Wanneer je een afbeelding aan een master‑dia toevoegt, verschijnt deze op alle dia’s die lay‑outs van die master gebruiken. Dit is handig voor logo’s, watermerken, decoratieve bandjes en andere herhalende visuele elementen.

Het volgende voorbeeld voegt een logo toe aan de eerste master‑dia:

auto presentation = System::MakeObject<Presentation>(u"presentation.pptx");

auto masterSlide = presentation->get_Master(0);
auto logoBytes = System::IO::File::ReadAllBytes(u"logo.png");
auto logoImage = presentation->get_Images()->AddImage(logoBytes);

masterSlide->get_Shapes()->AddPictureFrame(
    ShapeType::Rectangle,
    20.0f,
    20.0f,
    80.0f,
    80.0f,
    logoImage);

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

Voor meer informatie over afbeeldingsframes, zie Picture Frame.

Werken met Plaatsaanduidingen

Plaatsaanduidingen worden normaal gedefinieerd op lay‑out‑dia’s. De master‑dia levert de gedeelde stijl en het thema waar deze lay‑outs van erven, terwijl elke lay‑out bepaalt welke plaatsaanduidingen beschikbaar zijn en waar ze geplaatst worden.

In PowerPoint zijn de plaatsaanduidingsopdrachten beschikbaar in de Slide Master‑weergave.

The Insert Placeholder command in PowerPoint Slide Master view

Om nieuwe plaatsaanduidingen toe te voegen met Aspose.Slides, werk je met de lay‑out‑dia die bij de master hoort:

auto presentation = System::MakeObject<Presentation>(u"presentation.pptx");

auto masterSlide = presentation->get_Master(0);
auto blankLayoutSlide = masterSlide->get_LayoutSlides()->GetByType(SlideLayoutType::Blank);

if (blankLayoutSlide == nullptr)
{
    blankLayoutSlide = masterSlide->get_LayoutSlides()->Add(SlideLayoutType::Blank, u"Blank");
}

blankLayoutSlide->get_PlaceholderManager()->AddTextPlaceholder(
    60.0f,
    120.0f,
    600.0f,
    80.0f);

presentation->get_Slides()->AddEmptySlide(blankLayoutSlide);
presentation->Save(u"presentation-with-placeholder.pptx", SaveFormat::Pptx);
presentation->Dispose();

Je kunt ook de vorm van bestaande plaatsaanduidingen op een master‑dia opmaken. Het volgende voorbeeld zoekt de titel‑plaatsaanduiding en past een lineaire gradiëntvulling toe:

auto presentation = System::MakeObject<Presentation>(u"presentation.pptx");

auto masterSlide = presentation->get_Master(0);
System::SharedPtr<IAutoShape> titlePlaceholder;

for (auto&& shape : masterSlide->get_Shapes())
{
    auto autoShape = System::AsCast<IAutoShape>(shape);

    if (autoShape != nullptr &&
        autoShape->get_Placeholder() != nullptr &&
        autoShape->get_Placeholder()->get_Type() == PlaceholderType::Title)
    {
        titlePlaceholder = autoShape;
        break;
    }
}

if (titlePlaceholder != nullptr)
{
    auto fillFormat = titlePlaceholder->get_FillFormat();
    fillFormat->set_FillType(FillType::Gradient);

    auto gradientFormat = fillFormat->get_GradientFormat();
    gradientFormat->set_GradientShape(GradientShape::Linear);

    auto gradientStops = gradientFormat->get_GradientStops();
    auto redGradientColor = System::Drawing::Color::FromArgb(255, 0, 0);
    auto purpleGradientColor = System::Drawing::Color::FromArgb(128, 0, 128);

    gradientStops->Add(0.0f, redGradientColor);
    gradientStops->Add(255.0f, purpleGradientColor);
}

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

Formatted title placeholder inherited by normal slides

Voor meer opties rond plaatsaanduidingen en tekstopmaak, zie Set Prompt Text in Placeholder en Text Formatting.

Achtergrond van een Slide Master Wijzigen

Een master‑achtergrond wordt geërfd door lay‑outs en dia’s die deze niet overschrijven. Het volgende voorbeeld stelt een effen achtergrondkleur in voor de eerste master‑dia:

auto presentation = System::MakeObject<Presentation>(u"presentation.pptx");

auto masterSlide = presentation->get_Master(0);
auto masterBackgroundColor = System::Drawing::Color::get_ForestGreen();

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(masterBackgroundColor);

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

Gerelateerde onderwerpen: Presentation Background en Presentation Theme.

Een Slide Master Kopiëren naar een Andere Presentatie

Gebruik IMasterSlideCollection::AddClone om een master‑dia naar een andere presentatie te kopi ren. De gekopieerde master kan vervolgens worden gebruikt door lay‑outs en dia’s in de doelpresentatie.

auto sourcePresentation = System::MakeObject<Presentation>(u"source.pptx");
auto destinationPresentation = System::MakeObject<Presentation>(u"destination.pptx");

auto sourceMasterSlide = sourcePresentation->get_Master(0);
auto clonedMasterSlide = destinationPresentation->get_Masters()->AddClone(sourceMasterSlide);

destinationPresentation->Save(u"destination-with-master.pptx", SaveFormat::Pptx);
destinationPresentation->Dispose();
sourcePresentation->Dispose();

Als je normale dia’s wilt kopiëren samen met hun master, zie Clone Slides.

Meerdere Slide Masters Toevoegen

Een presentatie kan meerdere master‑dia’s bevatten. Dit is handig wanneer verschillende secties verschillende branding, paginacompositie of themainstellingen vereisen.

PowerPoint commands for inserting and managing master slides

Het volgende voorbeeld kloont de standaard‑master, geeft de kloon een andere achtergrond, maakt een lay‑out onder die gekloonde master en voegt een nieuwe dia toe gebaseerd op die lay‑out:

auto presentation = System::MakeObject<Presentation>(u"presentation.pptx");

auto defaultMasterSlide = presentation->get_Master(0);
auto sectionMasterSlide = presentation->get_Masters()->AddClone(defaultMasterSlide);
auto sectionMasterBackgroundColor = System::Drawing::Color::get_LightSteelBlue();

sectionMasterSlide->get_Background()->set_Type(BackgroundType::OwnBackground);
sectionMasterSlide->get_Background()->get_FillFormat()->set_FillType(FillType::Solid);
sectionMasterSlide->get_Background()->get_FillFormat()->get_SolidFillColor()->set_Color(sectionMasterBackgroundColor);

auto sourceBlankLayout = defaultMasterSlide->get_LayoutSlides()->GetByType(SlideLayoutType::Blank);

if (sourceBlankLayout == nullptr)
{
    sourceBlankLayout = defaultMasterSlide->get_LayoutSlide(0);
}

auto sectionBlankLayout = sectionMasterSlide->get_LayoutSlides()->AddClone(sourceBlankLayout);

presentation->get_Slides()->AddEmptySlide(sectionBlankLayout);
presentation->Save(u"presentation-with-multiple-masters.pptx", SaveFormat::Pptx);
presentation->Dispose();

Slide Masters Vergelijken

Master‑dia’s kunnen worden vergeleken met de Equals‑methode die is geërfd van IBaseSlide. De vergelijking controleert structuur en statische inhoud, zoals vormen, tekst, opmaak, animaties en andere dia‑instellingen. Unieke identifiers, zoals dia‑ID’s, of dynamische plaatsaanduidingswaarden, zoals de huidige datum, worden niet vergeleken.

auto firstPresentation = System::MakeObject<Presentation>(u"first.pptx");
auto secondPresentation = System::MakeObject<Presentation>(u"second.pptx");
auto firstPresentationMasterCount = firstPresentation->get_Masters()->get_Count();
auto secondPresentationMasterCount = secondPresentation->get_Masters()->get_Count();

for (int32_t firstMasterIndex = 0;
     firstMasterIndex < firstPresentationMasterCount;
     firstMasterIndex++)
{
    for (int32_t secondMasterIndex = 0;
         secondMasterIndex < secondPresentationMasterCount;
         secondMasterIndex++)
    {
        auto firstMasterSlide = firstPresentation->get_Master(firstMasterIndex);
        auto secondMasterSlide = secondPresentation->get_Master(secondMasterIndex);
        auto areMasterSlidesEqual = firstMasterSlide->Equals(secondMasterSlide);

        if (areMasterSlidesEqual)
        {
            System::Console::WriteLine(
                System::String::Format(
                    u"first.pptx master #{0} equals second.pptx master #{1}",
                    firstMasterIndex,
                    secondMasterIndex));
        }
    }
}

secondPresentation->Dispose();
firstPresentation->Dispose();

Voor meer informatie, zie Compare Presentation Slides.

Slide Master‑weergave Instellen als Standaardweergave

Gebruik de methode set_LastView op ViewProperties om de weergave te bepalen die PowerPoint als eerste opent. Het volgende voorbeeld opent de presentatie in de Slide Master‑weergave:

auto presentation = System::MakeObject<Presentation>(u"presentation.pptx");

presentation->get_ViewProperties()->set_LastView(ViewType::SlideMasterView);
presentation->Save(u"presentation-master-view.pptx", SaveFormat::Pptx);
presentation->Dispose();

Voor meer weergave‑instellingen, zie Save Presentation.

Ongebruikte Master Slides Verwijderen

Soms bevatten presentaties master‑dia’s die door geen enkele normale dia meer worden gebruikt. Het verwijderen van ongebruikte masters kan de bestandsgrootte verkleinen en het onderhoud van sjablonen vereenvoudigen.

Gebruik MasterSlideCollection::RemoveUnused om ongebruikte masters uit de collectie get_Masters() te verwijderen:

auto presentation = System::MakeObject<Presentation>(u"presentation.pptx");

presentation->get_Masters()->RemoveUnused(true);
presentation->Save(u"presentation-clean.pptx", SaveFormat::Pptx);
presentation->Dispose();

Je kunt ook de low‑code‑methode Compress::RemoveUnusedMasterSlides gebruiken:

auto presentation = System::MakeObject<Presentation>(u"presentation.pptx");

LowCode::Compress::RemoveUnusedMasterSlides(presentation);
presentation->Save(u"presentation-clean.pptx", SaveFormat::Pptx);
presentation->Dispose();

FAQ

Wat is het verschil tussen een slide master en een layout slide?

Een slide master definieert gedeelde ontwerpinstellingen zoals thema, achtergrond, gemeenschappelijke vormen en tekststijlen. Een layout slide behoort tot een master‑dia en bepaalt een specifieke rangschikking van plaatsaanduidingen. Een normale dia gebruikt een layout slide, waardoor hij zowel van de layout als van de master erft.

Kan één presentatie meerdere slide masters bevatten?

Ja. Een presentatie kan meerdere slide masters bevatten. Gebruik meerdere masters wanneer verschillende secties verschillende visuele systemen of branding nodig hebben.

Moet ik plaatsaanduidingen toevoegen aan een master‑dia of een layout‑dia?

In de meeste gevallen voeg je plaatsaanduidingen toe aan layout‑dia’s. Plaats gedeelde visuele elementen en gedeelde opmaak op de master‑dia en voeg vervolgens de inhoud‑plaatsaanduidingen toe op de lay‑outs die normale dia’s zullen gebruiken.

Kan ik een master‑dia verwijderen die nog wordt gebruikt?

Nee. Een master‑dia met afhankelijke dia’s kan niet veilig direct worden verwijderd. Verplaats eerst die dia’s naar lay‑outs onder een andere master, of gebruik een opruimingsmethode die alleen ongebruikte masters verwijdert.