Toegang tot presentatiedia's in C++
Overzicht
Dit artikel legt uit hoe je dia’s in een presentatie kunt benaderen en beheren met Aspose.Slides. Het laat zien hoe je dia’s kunt ophalen via hun nul‑gebaseerde index uit de dia‑verzameling en hoe je een dia kunt benaderen via de unieke ID met de GetSlideById-methode.
Je leert ook hoe je de positie van een dia kunt wijzigen met de set_SlideNumber-methode en hoe je het beginnende dia‑nummer voor een presentatie kunt definiëren met de set_FirstSlideNumber-methode. De voorbeelden tonen hoe je een presentatie laadt, dia‑referenties verkrijgt, de volgorde of nummering van dia’s bijwerkt, en de gewijzigde presentatie opslaat.
Dia benaderen via index
Alle dia’s in een presentatie zijn numeriek gerangschikt op basis van de positie, beginnend bij 0. De eerste dia is toegankelijk via index 0; de tweede dia via index 1; enzovoort.
De Presentation‑klasse, die een presentatie‑bestand voorstelt, maakt alle dia’s beschikbaar als een ISlideCollection‑collectie (collectie van ISlide‑objecten). Deze C++‑code laat zien hoe je een dia via zijn index kunt benaderen:
// Het pad naar de documentmap.
const String templatePath = u"../templates/AddSlides.pptx";
// Instantieert de Presentation-klasse.
SharedPtr<Presentation> pres = MakeObject<Presentation>(templatePath);
// Haal een referentie naar een dia op via zijn index.
SharedPtr<ISlide> slide = pres->get_Slides()->idx_get(0);
Dia benaderen via ID
Elke dia in een presentatie heeft een unieke ID. Je kunt de GetSlideById()‑methode (beschikbaar via de Presentation‑klasse) gebruiken om die ID te targeten. Deze C++‑code laat zien hoe je een geldige dia‑ID opgeeft en die dia benadert via de GetSlideById()‑methode:
// Het pad naar de documentenmap.
const String templatePath = u"../templates/AddSlides.pptx";
// Instantieert de Presentation-klasse
SharedPtr<Presentation> pres = MakeObject<Presentation>(templatePath);
// Haalt een dia-ID op
int id = pres->get_Slides()->idx_get(0)->get_SlideId();
// Benadert de dia via zijn ID
SharedPtr<IBaseSlide> slide = pres->GetSlideById(id);
Dia‑positie wijzigen
Aspose.Slides maakt het mogelijk om de positie van een dia te wijzigen. Bijvoorbeeld, je kunt opgeven dat de eerste dia de tweede dia moet worden.
- Maak een instantie van de Presentation‑klasse.
- Haal de referentie van de dia (wiens positie je wilt wijzigen) op via zijn index.
- Stel een nieuwe positie in voor de dia via de eigenschap set_SlideNumber().
- Sla de gewijzigde presentatie op.
Deze C++‑code demonstreert een bewerking waarbij de dia op positie 1 naar positie 2 wordt verplaatst:
// Het pad naar de documentenmap.
const String templatePath = u"../templates/AddSlides.pptx";
const String outPath = u"../out/ChangeSlidePosition.pptx";
// Instantieert de Presentation-klasse
SharedPtr<Presentation> pres = MakeObject<Presentation>(templatePath);
// Haalt de dia op waarvan de positie wordt gewijzigd
SharedPtr<ISlide> slide = pres->get_Slides()->idx_get(0);
// Stelt de nieuwe positie voor de dia in
slide->set_SlideNumber(2);
// Slaat de gewijzigde presentatie op
pres->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptx);
De eerste dia werd de tweede; de tweede dia werd de eerste. Wanneer je de positie van een dia wijzigt, worden de andere dia’s automatisch aangepast.
Dia‑nummer instellen
Met de eigenschap set_FirstSlideNumber() (beschikbaar via de Presentation‑klasse) kun je een nieuw nummer opgeven voor de eerste dia in een presentatie. Deze bewerking zorgt ervoor dat de andere dia‑nummers opnieuw worden berekend.
- Maak een instantie van de Presentation‑klasse.
- Haal het dia‑nummer op.
- Stel het dia‑nummer in.
- Sla de gewijzigde presentatie op.
Deze C++‑code demonstreert een bewerking waarbij het eerste dia‑nummer wordt ingesteld op 10:
// Het pad naar de documentenmap.
const String outPath = u"../out/SetSlideNumber_out.pptx";
const String templatePath = u"../templates/AccessSlides.pptx";
//Instantieert de Presentation-klasse
SharedPtr<Presentation> pres = MakeObject<Presentation>(templatePath);
// Haalt het dia-nummer op
int firstSlideNumber = pres->get_FirstSlideNumber();
// Stelt het dia-nummer in
pres->set_FirstSlideNumber(2);
// Slaat de gewijzigde presentatie op
pres->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptx);
Als je de eerste dia wilt overslaan, kun je de nummering starten vanaf de tweede dia (en de nummering voor de eerste dia verbergen) op deze manier:
auto presentation = System::MakeObject<Presentation>();
auto layoutSlide = presentation->get_LayoutSlides()->GetByType(SlideLayoutType::Blank);
auto slides = presentation->get_Slides();
slides->AddEmptySlide(layoutSlide);
slides->AddEmptySlide(layoutSlide);
slides->AddEmptySlide(layoutSlide);
// Sets the number for the first presentation slide
presentation->set_FirstSlideNumber(0);
// Shows slide numbers for all slides
presentation->get_HeaderFooterManager()->SetAllSlideNumbersVisibility(true);
// Hides the slide number for the first slide
slides->idx_get(0)->get_HeaderFooterManager()->SetSlideNumberVisibility(false);
// Saves the modified presentation
presentation->Save(u"output.pptx", SaveFormat::Pptx);
Veelgestelde vragen
Komt het dia-nummer dat een gebruiker ziet overeen met de nul‑gebaseerde index van de collectie?
Het nummer dat op een dia wordt getoond kan beginnen met een willekeurige waarde (bijv. 10) en hoeft niet overeen te komen met de index; de relatie wordt bepaald door de instelling voor het eerste dia‑nummer van de presentatie.
Hebben verborgen dia’s invloed op de indexering?
Ja. Een verborgen dia blijft in de collectie en wordt meegeteld bij het indexeren; “verborgen” betreft alleen de weergave, niet de positie in de collectie.
Verandert de index van een dia wanneer andere dia’s worden toegevoegd of verwijderd?
Ja. Indexen weerspiegelen altijd de huidige volgorde van de dia’s en worden opnieuw berekend bij invoegen, verwijderen en verplaatsen.