Åtkomst till presentationsbilder i C++

Översikt

Den här artikeln förklarar hur man kommer åt och hanterar bilder i en presentation med Aspose.Slides. Den visar hur man hämtar bilder via deras nollbaserade index i bilder‑samlingen och hur man kommer åt en bild via dess unika ID med metoden GetSlideById.

Du kommer också att lära dig hur du ändrar en bilds position med metoden set_SlideNumber och hur du definierar startbildnumret för en presentation med metoden set_FirstSlideNumber. Exemplen demonstrerar hur man laddar en presentation, hämtar bildreferenser, uppdaterar bildordning eller numrering samt sparar den modifierade presentationen.

Kom åt en bild via index

Alla bilder i en presentation är ordnade numeriskt baserat på bildens position med start från 0. Den första bilden är åtkomlig via index 0; den andra bilden via index 1; osv.

Klassen Presentation, som representerar en presentationsfil, exponerar alla bilder som en ISlideCollection samling (samling av ISlide objekt). Denna C++‑kod visar hur du kommer åt en bild via dess index:

	// Sökvägen till dokumentkatalogen.
	const String templatePath = u"../templates/AddSlides.pptx";

	// Instansierar Presentation-klassen
	SharedPtr<Presentation> pres = MakeObject<Presentation>(templatePath);

	// Hämta en bilds referens via dess index
	SharedPtr<ISlide> slide = pres->get_Slides()->idx_get(0);

Kom åt en bild via ID

Varje bild i en presentation har ett unikt ID kopplat till sig. Du kan använda metoden GetSlideById() (exponerad av klassen Presentation) för att rikta in dig på det ID:t. Denna C++‑kod visar hur du anger ett giltigt bild‑ID och kommer åt den bilden via metoden GetSlideById():

	// Sökvägen till dokumentkatalogen.
	const String templatePath = u"../templates/AddSlides.pptx";

	// Instansierar Presentation-klassen
	SharedPtr<Presentation> pres = MakeObject<Presentation>(templatePath);

	// Hämtar ett bild-ID
	int id = pres->get_Slides()->idx_get(0)->get_SlideId();

	// Kommer åt bilden via dess ID
	SharedPtr<IBaseSlide> slide = pres->GetSlideById(id);

Ändra bildposition

Aspose.Slides låter dig ändra en bilds position. Till exempel kan du ange att den första bilden ska bli den andra bilden.

  1. Skapa en instans av Presentation klassen.
  2. Hämta bildens referens (vars position du vill ändra) via dess index.
  3. Ange en ny position för bilden via egenskapen set_SlideNumber().
  4. Spara den modifierade presentationen.

Denna C++‑kod demonstrerar en operation där bilden i position 1 flyttas till position 2:

	// Sökvägen till dokumentkatalogen.
	const String templatePath = u"../templates/AddSlides.pptx";
	const String outPath = u"../out/ChangeSlidePosition.pptx";

	// Instansierar Presentation-klassen
	SharedPtr<Presentation> pres = MakeObject<Presentation>(templatePath);

	// Hämtar bilden vars position kommer att ändras
	SharedPtr<ISlide> slide = pres->get_Slides()->idx_get(0);

	// Anger den nya positionen för bilden
	slide->set_SlideNumber(2);

	// Sparar den modifierade presentationen
	pres->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptx);

Den första bilden blev den andra; den andra bilden blev den första. När du ändrar en bilds position justeras de andra bilderna automatiskt.

Ställ in bildnummer

Genom att använda egenskapen set_FirstSlideNumber() (exponerad av klassen Presentation) kan du ange ett nytt nummer för den första bilden i en presentation. Denna operation får de andra bildnumren att beräknas om.

  1. Skapa en instans av Presentation klassen.
  2. Hämta bildnumret.
  3. Ange bildnumret.
  4. Spara den modifierade presentationen.

Denna C++‑kod demonstrerar en operation där det första bildnumret sätts till 10:

	// Sökvägen till dokumentkatalogen.
	const String outPath = u"../out/SetSlideNumber_out.pptx";
	const String templatePath = u"../templates/AccessSlides.pptx";

	//Instansierar Presentation-klassen
	SharedPtr<Presentation> pres = MakeObject<Presentation>(templatePath);

	// Hämtar bildnumret
	int firstSlideNumber = pres->get_FirstSlideNumber();

	// Anger bildnumret
	pres->set_FirstSlideNumber(2);
	
	// Sparar den modifierade presentationen
	pres->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptx);

Om du föredrar att hoppa över den första bilden kan du starta numreringen från den andra bilden (och dölja numreringen för den första bilden) på detta sätt:

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

// Anger numret för den första presentationsbilden
presentation->set_FirstSlideNumber(0);

// Visar bildnummer för alla bilder
presentation->get_HeaderFooterManager()->SetAllSlideNumbersVisibility(true);

// Döljer bildnumret för den första bilden
slides->idx_get(0)->get_HeaderFooterManager()->SetSlideNumberVisibility(false);

// Sparar den modifierade presentationen
presentation->Save(u"output.pptx", SaveFormat::Pptx);

Vanliga frågor

Stämmer bildnumret som en användare ser överens med samlingens nollbaserade index?

Numret som visas på en bild kan börja från ett godtyckligt värde (t.ex. 10) och måste inte matcha indexet; förhållandet styrs av presentationens första bildnummer inställning.

Påverkar dolda bilder indexeringen?

Ja. En dold bild förblir i samlingen och räknas med i indexeringen; “dold” avser visning, inte dess position i samlingen.

Ändras en bilds index när andra bilder läggs till eller tas bort?

Ja. Indexen speglar alltid den aktuella ordningen i bilder och beräknas om vid insättnings-, raderings- och flyttoperationer.