C++'ta Sunum Slaytlarına Erişim

Genel Bakış

Bu makale, Aspose.Slides kullanarak bir sunumdaki slaytlara nasıl erişileceğini ve yönetileceğini açıklıyor. Slayt koleksiyonundan sıfır tabanlı indeksle slaytların nasıl alınacağını ve GetSlideById yöntemiyle bir slaydın benzersiz kimliğiyle nasıl erişileceğini gösterir.

Ayrıca set_SlideNumber yöntemiyle bir slaydın konumunu nasıl değiştireceğinizi ve set_FirstSlideNumber yöntemiyle bir sunum için başlangıç slayt numarasını nasıl tanımlayacağınızı öğreneceksiniz. Örnekler, bir sunumu yüklemeyi, slayt referanslarını almayı, slayt sırasını veya numaralandırmasını güncellemeyi ve değiştirilmiş sunumu kaydetmeyi göstermektedir.

İndekse Göre Slayta Erişim

Bir sunumdaki tüm slaytlar, slayt konumu temel alındığında 0’dan başlayarak sayısal olarak düzenlenir. İlk slayt 0. indeks üzerinden erişilebilir; ikinci slayt 1. indeks üzerinden erişilir; vb.

Sunum dosyasını temsil eden Presentation sınıfı, tüm slaytları bir ISlideCollection koleksiyonu ( ISlide nesnelerinin koleksiyonu) olarak sunar. Bu C++ kodu, bir slayta indeksine göre nasıl erişileceğini gösterir:

	// Belgeler dizinine giden yol.
	const String templatePath = u"../templates/AddSlides.pptx";

	// Presentation sınıfını örnekler.
	SharedPtr<Presentation> pres = MakeObject<Presentation>(templatePath);

	// Bir slaydın referansını indeks üzerinden al.
	SharedPtr<ISlide> slide = pres->get_Slides()->idx_get(0);

Kimliğe Göre Slayta Erişim

Bir sunumdaki her slayt, kendisine özgü bir kimliğe sahiptir. Bu kimliği hedeflemek için Presentation sınıfı tarafından sunulan GetSlideById() yöntemini kullanabilirsiniz. Bu C++ kodu, geçerli bir slayt kimliği sağlamanın ve bu slayta GetSlideById() yöntemiyle nasıl erişileceğini gösterir:

	// Belgeler dizinine giden yol.
	const String templatePath = u"../templates/AddSlides.pptx";

	// Presentation sınıfını örnekler.
	SharedPtr<Presentation> pres = MakeObject<Presentation>(templatePath);

	// Bir slayd kimliği alır
	int id = pres->get_Slides()->idx_get(0)->get_SlideId();

	// Slayta kimliğiyle erişir
	SharedPtr<IBaseSlide> slide = pres->GetSlideById(id);

Slayt Konumunu Değiştirme

Aspose.Slides, bir slaydın konumunu değiştirmenize olanak tanır. Örneğin, ilk slaydın ikinci slayt haline gelmesini belirtebilirsiniz.

  1. Bir Presentation sınıfının bir örneğini oluşturun.
  2. Pozisyonunu değiştirmek istediğiniz slaydın referansını indeksine göre alın.
  3. Slaydın yeni konumunu set_SlideNumber() özelliğiyle ayarlayın.
  4. Değiştirilmiş sunumu kaydedin.

Bu C++ kodu, konumu 1 olan slaydın konumu 2’ye taşındığı bir işlemi göstermektedir:

	// Belgeler dizinine giden yol.
	const String templatePath = u"../templates/AddSlides.pptx";
	const String outPath = u"../out/ChangeSlidePosition.pptx";

	// Presentation sınıfını örnekler.
	SharedPtr<Presentation> pres = MakeObject<Presentation>(templatePath);

	// Konumu değiştirilecek slaytı alır
	SharedPtr<ISlide> slide = pres->get_Slides()->idx_get(0);

	// Slayt için yeni konumu ayarlar
	slide->set_SlideNumber(2);

	// Değiştirilmiş sunumu kaydeder
	pres->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptx);

İlk slayt ikinci oldu; ikinci slayt birinci oldu. Bir slaydın konumunu değiştirdiğinizde, diğer slaytlar otomatik olarak ayarlanır.

Slayt Numrasını Ayarlama

set_FirstSlideNumber() özelliğini ( Presentation sınıfı tarafından sunulan) kullanarak bir sunumdaki ilk slayd için yeni bir numara belirleyebilirsiniz. Bu işlem, diğer slayt numaralarının yeniden hesaplanmasına neden olur.

  1. Bir Presentation sınıfının bir örneğini oluşturun.
  2. Slayt numarasını alın.
  3. Slayt numarasını ayarlayın.
  4. Değiştirilmiş sunumu kaydedin.

Bu C++ kodu, ilk slayt numarasının 10 olarak ayarlandığı bir işlemi göstermektedir:

	// Belgeler dizinine giden yol.
	const String outPath = u"../out/SetSlideNumber_out.pptx";
	const String templatePath = u"../templates/AccessSlides.pptx";

	//Presentation sınıfını örnekler
	SharedPtr<Presentation> pres = MakeObject<Presentation>(templatePath);

	// Slayt numarasını alır
	int firstSlideNumber = pres->get_FirstSlideNumber();

	// Slayt numarasını ayarlar
	pres->set_FirstSlideNumber(2);
	
	// Değiştirilmiş sunumu kaydeder
	pres->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptx);

İlk slaytı atlamak isterseniz, numaralandırmayı ikinci slayttan başlatabilir (ve ilk slayt için numaralandırmayı gizleyebilirsiniz) şu şekilde:

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

SSS

Kullanıcının gördüğü slayt numarası, koleksiyonun sıfır tabanlı indeksine eşleşir mi?

Bir slaytta gösterilen numara, isteğe bağlı bir değerden (örneğin 10) başlayabilir ve indeksle eşleşmek zorunda değildir; ilişki, sunumun first slide number ayarı tarafından kontrol edilir.

Gizli slaytlar indekslemeyi etkiler mi?

Evet. Gizli bir slayt koleksiyonda kalır ve indekslemeye dahil edilir; “gizli” ifadesi, slaydın görüntülenmesiyle ilgilidir, koleksiyondaki konumuyla değil.

Diğer slaytlar eklendiğinde veya kaldırıldığında bir slaydın indeksi değişir mi?

Evet. İndeksler, slaytların mevcut sırasını her zaman yansıtır ve ekleme, silme ve taşıma işlemleri sırasında yeniden hesaplanır.