Dia‑indelingen toepassen of wijzigen in C++

Inleiding

Een dia‑indeling definieert de rangschikking van placeholder‑vakken en de opmaak van de inhoud op een dia. Het bepaalt welke placeholders beschikbaar zijn en waar ze verschijnen. Dia‑indelingen helpen je om presentaties snel en consistent te ontwerpen – of je nu iets eenvoudigs of complexere maakt. Enkele van de meest voorkomende dia‑indelingen in PowerPoint zijn:

Titel‑dia‑indeling – Bevat twee tekst‑placeholders: één voor de titel en één voor de ondertitel.

Titel‑en‑Inhoud‑indeling – Heeft een kleiner titel‑placeholder bovenaan en een groter eronder voor de hoofdinhoud (zoals tekst, opsommingstekens, grafieken, afbeeldingen en meer).

Lege indeling – Bevat geen placeholders, zodat je volledige controle hebt om de dia vanaf nul te ontwerpen.

Dia‑indelingen maken deel uit van een dia‑master, die de bovenste dia is die lay‑outstijlen voor de presentatie definieert. Je kunt indelingsdia’s benaderen en wijzigen via de dia‑master – ofwel op basis van hun type, naam of unieke ID. Alternatief kun je een specifieke indelingsdia rechtstreeks binnen de presentatie bewerken.

Om met dia‑indelingen te werken in Aspose.Slides for Android, kun je gebruiken:

Dia‑indelingen toevoegen aan presentaties

Om het uiterlijk en de structuur van je dia’s aan te passen, moet je mogelijk nieuwe indelingsdia’s aan een presentatie toevoegen. Aspose.Slides for Android stelt je in staat te controleren of een specifieke indeling al bestaat, er een nieuwe toe te voegen indien nodig, en deze te gebruiken om dia’s in te voegen op basis van die indeling.

  1. Maak een instantie van de Presentation‑klasse.
  2. Benader de IMasterLayoutSlideCollection.
  3. Controleer of de gewenste indelingsdia al bestaat in de collectie. Zo niet, voeg dan de benodigde indelingsdia toe.
  4. Voeg een lege dia toe op basis van de nieuwe indelingsdia.
  5. Sla de presentatie op.

De volgende C++‑code toont hoe je een dia‑indeling toevoegt aan een PowerPoint‑presentatie:

// Instantieer de Presentation-klasse die een PowerPoint-bestand vertegenwoordigt.
auto presentation = MakeObject<Presentation>(u"Sample.pptx");

// Ga door de indelingsdia‑types om een indelingsdia te selecteren.
auto layoutSlides = presentation->get_Master(0)->get_LayoutSlides();
SharedPtr<ILayoutSlide> layoutSlide;
if (layoutSlides->GetByType(SlideLayoutType::TitleAndObject) != nullptr)
{
    layoutSlide = layoutSlides->GetByType(SlideLayoutType::TitleAndObject);
}
else if (layoutSlides->GetByType(SlideLayoutType::Title) != nullptr)
{
    layoutSlide = layoutSlides->GetByType(SlideLayoutType::Title);
}

if (layoutSlide == nullptr)
{
    // Een situatie waarin de presentatie niet alle indelingstypen bevat.
    // Het presentiebestand bevat alleen lege en aangepaste indelingstypen.
    // Echter kunnen indelingsdia's met aangepaste typen herkenbare namen hebben,
    // zoals "Titel", "Titel en Inhoud", enz., die gebruikt kunnen worden voor het selecteren van een indelingsdia.
    // Je kunt ook vertrouwen op een reeks placeholder-vormtypen.
    // Bijvoorbeeld, een titel-diapositief moet alleen het Titel-placeholder-type hebben, enzovoort.
    for (int i = 0; i < layoutSlides->get_Count(); i++)
    {
        auto titleAndObjectLayoutSlide = layoutSlides->idx_get(i);

        if (titleAndObjectLayoutSlide->get_Name().Equals(u"Title and Object"))
        {
            layoutSlide = titleAndObjectLayoutSlide;
            break;
        }
    }

    if (layoutSlide == nullptr)
    {
        for (int i = 0; i < layoutSlides->get_Count(); i++)
        {
            auto titleLayoutSlide = layoutSlides->idx_get(i);

            if (titleLayoutSlide->get_Name() == u"Title")
            {
                layoutSlide = titleLayoutSlide;
                break;
            }
        }

        if (layoutSlide == nullptr)
        {
            layoutSlide = layoutSlides->GetByType(SlideLayoutType::Blank);
            if (layoutSlide == nullptr)
            {
                layoutSlide = layoutSlides->Add(SlideLayoutType::TitleAndObject, u"Title and Object");
            }
        }
    }
}

// Voeg een lege dia toe met behulp van de toegevoegde indelingsdia.
presentation->get_Slides()->InsertEmptySlide(0, layoutSlide);

// Sla de presentatie op naar schijf.
presentation->Save(u"Output.pptx", SaveFormat::Pptx);
presentation->Dispose();

Ongebruikte indelingsdia’s verwijderen

Aspose.Slides biedt de RemoveUnusedLayoutSlides‑methode uit de Compress‑klasse om ongewenste en ongebruikte indelingsdia’s te verwijderen.

De volgende C++‑code laat zien hoe je een indelingsdia uit een PowerPoint‑presentatie verwijdert:

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

Compress::RemoveUnusedLayoutSlides(presentation);

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

Placeholders toevoegen aan dia‑indelingen

Aspose.Slides biedt de ILayoutSlide.get_PlaceholderManager‑methode, waarmee je nieuwe placeholders aan een indelingsdia kunt toevoegen.

Deze manager bevat methoden voor de volgende placeholder‑typen:

PowerPoint‑placeholder ILayoutPlaceholderManager Methode
Content AddContentPlaceholder(float x, float y, float width, float height)
Content (Vertical) AddVerticalContentPlaceholder(float x, float y, float width, float height)
Text AddTextPlaceholder(float x, float y, float width, float height)
Text (Vertical) AddVerticalTextPlaceholder(float x, float y, float width, float height)
Picture AddPicturePlaceholder(float x, float y, float width, float height)
Chart AddChartPlaceholder(float x, float y, float width, float height)
Table AddTablePlaceholder(float x, float y, float width, float height)
SmartArt AddSmartArtPlaceholder(float x, float y, float width, float height)
Media AddMediaPlaceholder(float x, float y, float width, float height)
Online Image AddOnlineImagePlaceholder(float x, float y, float width, float height)

De volgende C++‑code demonstreert hoe je nieuwe placeholder‑vormen toevoegt aan de lege indelingsdia:

auto presentation = MakeObject<Presentation>();

// Haal de lege indelingsdia op.
auto layout = presentation->get_LayoutSlides()->GetByType(SlideLayoutType::Blank);

// Get the placeholder manager of the layout slide.
auto placeholderManager = layout->get_PlaceholderManager();

// Add different placeholders to the Blank layout slide.
placeholderManager->AddContentPlaceholder(20, 20, 310, 270);
placeholderManager->AddVerticalTextPlaceholder(350, 20, 350, 270);
placeholderManager->AddChartPlaceholder(20, 310, 310, 180);
placeholderManager->AddTablePlaceholder(350, 310, 350, 180);

// Add a new slide with the Blank layout.
auto newSlide = presentation->get_Slides()->AddEmptySlide(layout);

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

Het resultaat:

De placeholders op de indelingsdia

Voettekst‑zichtbaarheid instellen voor een indelingsdia

In PowerPoint‑presentaties kunnen voettekstelementen zoals datum, paginanummer en aangepaste tekst worden weergegeven of verborgen afhankelijk van de dia‑indeling. Aspose.Slides for Android stelt je in staat de zichtbaarheid van deze voettekst‑placeholders te regelen. Dit is handig wanneer je wilt dat bepaalde indelingen voettekstinformatie tonen terwijl andere schoon blijven.

  1. Maak een instantie van de Presentation‑klasse.
  2. Haal een referentie naar een indelingsdia op via de index.
  3. Stel de voettekst‑placeholder van de dia in op zichtbaar.
  4. Stel de paginanummer‑placeholder van de dia in op zichtbaar.
  5. Stel de datum‑tijd‑placeholder van de dia in op zichtbaar.
  6. Sla de presentatie op.

De volgende C++‑code laat zien hoe je de zichtbaarheid van een dia‑voettekst instelt en gerelateerde taken uitvoert:

auto presentation = MakeObject<Presentation>(u"Presentation.ppt");
auto headerFooterManager = presentation->get_LayoutSlides()->idx_get(0)->get_HeaderFooterManager();

if (!headerFooterManager->get_IsFooterVisible())
{
    headerFooterManager->SetFooterVisibility(true);
}

if (!headerFooterManager->get_IsSlideNumberVisible())
{
    headerFooterManager->SetSlideNumberVisibility(true);
}

if (!headerFooterManager->get_IsDateTimeVisible())
{
    headerFooterManager->SetDateTimeVisibility(true);
}

headerFooterManager->SetFooterText(u"Footer text");
headerFooterManager->SetDateTimeText(u"Date and time text");

presentation->Save(u"Presentation.ppt", SaveFormat::Pptx);
presentation->Dispose();

Voettekst‑zichtbaarheid van sub‑dia’s instellen

In PowerPoint‑presentaties kunnen voettekstelementen zoals datum, paginanummer en aangepaste tekst op master‑dia‑niveau worden beheerd om consistentie over alle indelingsdia’s te waarborgen. Aspose.Slides for Android maakt het mogelijk om de zichtbaarheid en inhoud van deze voettekst‑placeholders op de master‑dia in te stellen en deze instellingen door te voeren naar alle onderliggende indelingsdia’s. Deze aanpak zorgt voor uniforme voettekst‑informatie in de gehele presentatie.

  1. Maak een instantie van de Presentation‑klasse.
  2. Haal een referentie naar de master‑dia op via de index.
  3. Stel de master‑ en alle onderliggende voettekst‑placeholders in op zichtbaar.
  4. Stel de master‑ en alle onderliggende paginanummer‑placeholders in op zichtbaar.
  5. Stel de master‑ en alle onderliggende datum‑tijd‑placeholders in op zichtbaar.
  6. Sla de presentatie op.

De volgende C++‑code demonstreert deze bewerking:

auto presentation = MakeObject<Presentation>();

auto headerFooterManager = presentation->get_Master(0)->get_HeaderFooterManager();

headerFooterManager->SetFooterAndChildFootersVisibility(true);
headerFooterManager->SetSlideNumberAndChildSlideNumbersVisibility(true);
headerFooterManager->SetDateTimeAndChildDateTimesVisibility(true);

headerFooterManager->SetFooterAndChildFootersText(u"Footer text");
headerFooterManager->SetDateTimeAndChildDateTimesText(u"Date and time text");

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

FAQ

Wat is het verschil tussen een masterslide en een indelingsdia?

Een masterslide definieert het algemene thema en de standaardopmaak, terwijl indelingsdia’s specifieke rangschikkingen van placeholders voor verschillende soorten inhoud definiëren.

Kan ik een indelingsdia van de ene presentatie naar de andere kopiëren?

Ja, je kunt een indelingsdia klonen vanuit de indelingsdia‑collectie van een presentatie, toegankelijk via de get_LayoutSlides‑methode, en deze invoegen in een andere presentatie met de AddClone‑methode.

Wat gebeurt er als ik een indelingsdia verwijder dat nog door een dia wordt gebruikt?

Als je probeert een indelingsdia te verwijderen dat nog wordt gerefereerd door ten minste één dia in de presentatie, zal Aspose.Slides een PptxEditException werpen. Om dit te voorkomen, gebruik je RemoveUnusedLayoutSlides, die veilig alleen de niet‑gebruikte indelingsdia’s verwijdert.