Kezelje a bemutató diamestereket C++-ban
Áttekintés
A slide master közös tervezési beállításokat határoz meg egy diacsoport számára. Tartalmazhat közös alakzatokat, logókat, háttereket, szövegstílusokat, téma beállításokat és lábléc beállításokat. A PowerPointban a slide master szerkesztése a szokásos módja annak, hogy a bemutató konzisztens maradjon anélkül, hogy minden dián ismételné a formázást.
Az Aspose.Slides for C++ támogatja ugyanazt a modellt. Egy bemutató egy vagy több mester diát tartalmazhat, és minden mester dia több elrendezés diát (layout slide) tartalmazhat. A normál diák általában nem hivatkoznak közvetlenül egy mester diára. Ehelyett egy normál dia egy elrendezés diát használ, és ez az elrendezés dia egy mester diához tartozik.
A hierarchia a következő:
- Slide master - meghatározza a közös tervezést és témát.
- Layout slide - meghatároz egy konkrét elrendezést helyfoglalókkal és elrendezés-szintű formázással.
- Normal slide - tartalmazza a tényleges bemutató tartalmat és egy elrendezés diát használ.

Az Aspose.Slides-ban egy slide master-t a IMasterSlide interfész képviseli. A bemutató összes mester diája elérhető a Presentation::get_Masters gyűjteményen keresztül, amely a IMasterSlideCollection interfészt valósítja meg.
Inheritance
Ha ugyanaz a tulajdonság több szinten is definiálva van, a specifikusabb szint nyeri el a hatást. Például, ha egy mester dia és egy elrendezés dia is meghatároz egy hátteret, akkor a layoutot használó diák a layout háttérét alkalmazzák. További információért az elrendezés diákról lásd a Apply or Change Slide Layouts oldalt.Slide Master elérése
A PowerPointban a Slide Master nézetet a View > Slide Master menüpontból nyithatja meg.

Az Aspose.Slides-ban használja a get_Masters() gyűjteményt a mester diák eléréséhez:
#include <DOM/IMasterLayoutSlideCollection.h>
#include <DOM/IMasterSlide.h>
#include <DOM/IMasterSlideCollection.h>
#include <DOM/Presentation.h>
#include <system/console.h>
using namespace Aspose::Slides;
using namespace System;
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();
A normál dia által használt mester diát az elrendezésén keresztül is lekérdezheti:
#include <DOM/ILayoutSlide.h>
#include <DOM/IMasterSlide.h>
#include <DOM/ISlide.h>
#include <DOM/Presentation.h>
#include <system/console.h>
using namespace Aspose::Slides;
using namespace System;
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();
Mi található egy Slide Master-ben
A master slide egy dia-szerű objektum. Implementálja a IBaseSlide interfészt, ezért ugyanazokat a dia tulajdonságokat teszi elérhetővé, mint a normál és elrendezés diák. A master-specifikus tagok a IMasterSlide API oldalán találhatók.
Az általánosan használt master slide tagok a következők:
| Tag | Leírás |
|---|---|
get_Background() |
Beállítja a master szintű dia hátterét. |
get_Shapes() |
A masterre elhelyezett alakzatokat tárolja, például logókat, képkereteket és megosztott szöveget. |
get_LayoutSlides() |
A masterhez tartozó elrendezés diák tárolja. |
get_ThemeManager() |
Hozzáférést biztosít a master téma API-khoz. |
get_HeaderFooterManager() |
A fejlécek, láblécek, dátumok és dia számok vezérlése a master és annak gyermek elrendezései számára. |
GetDependingSlides() |
Visszaadja azokat a normál diákot, amelyek a masterhez tartoznak az elrendezésükön keresztül. |
Kép hozzáadása egy Slide Master-hez
Amikor egy képet ad hozzá egy master diához, az a masterhez tartozó elrendezéseket használó diákon megjelenik. Ez hasznos logók, vízjelek, díszbövetek és egyéb ismétlődő vizuális elemek esetén.
A következő példa egy logót ad az első master diához:
#include <DOM/IImageCollection.h>
#include <DOM/IMasterSlide.h>
#include <DOM/IShapeCollection.h>
#include <DOM/Presentation.h>
#include <DOM/ShapeType.h>
#include <Export/SaveFormat.h>
#include <system/io/file.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System::IO;
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();
Az képkeretekről további információk a Picture Frame oldalon találhatók.
A master grafika láthatóságának vezérlése
A IBaseSlide::set_ShowMasterShapes használatával elrejtheti a örökölt master grafikákat, például logókat vagy dísz alakzatokat, anélkül, hogy törölné azokat a masterről. Adjon false értéket a Slide::set_ShowMasterShapes metódusnak azon dián, amelynek el kell rejtenie ezeket a grafikákat, és true-t azoknál a diákon, amelyeknél meg kell jeleníteni.
A következő önálló példa egy kék díszbövetet hoz létre egy masteren, valamint két diát, amelyek ugyanazt az üres elrendezést használják. A bövet látható az első dián, a másodikon rejtett. Nem szükséges bemeneti bemutató vagy kép.
#include <DOM/FillType.h>
#include <DOM/IAutoShape.h>
#include <DOM/IColorFormat.h>
#include <DOM/IFillFormat.h>
#include <DOM/ILayoutSlide.h>
#include <DOM/ILineFormat.h>
#include <DOM/IMasterLayoutSlideCollection.h>
#include <DOM/IMasterSlide.h>
#include <DOM/IShapeCollection.h>
#include <DOM/ISlide.h>
#include <DOM/ISlideCollection.h>
#include <DOM/ISlideSize.h>
#include <DOM/Presentation.h>
#include <DOM/ShapeType.h>
#include <DOM/SlideLayoutType.h>
#include <Export/SaveFormat.h>
#include <drawing/color.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System;
using namespace System::Drawing;
auto presentation = MakeObject<Presentation>();
auto masterSlide = presentation->get_Master(0);
auto layoutSlide = masterSlide->get_LayoutSlides()->GetByType(SlideLayoutType::Blank);
layoutSlide->set_ShowMasterShapes(true);
auto slideHeight = presentation->get_SlideSize()->get_Size().get_Height();
auto band = masterSlide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 0.0f, 0.0f, 60.0f, slideHeight);
band->get_FillFormat()->set_FillType(FillType::Solid);
band->get_FillFormat()->get_SolidFillColor()->set_Color(Color::get_SteelBlue());
band->get_LineFormat()->get_FillFormat()->set_FillType(FillType::NoFill);
auto visibleSlide = presentation->get_Slide(0);
visibleSlide->set_LayoutSlide(layoutSlide);
visibleSlide->get_Shapes()->Clear();
auto hiddenSlide = presentation->get_Slides()->AddEmptySlide(layoutSlide);
visibleSlide->set_ShowMasterShapes(true);
hiddenSlide->set_ShowMasterShapes(false);
presentation->Save(u"master-graphics.pptx", SaveFormat::Pptx);
presentation->Dispose();
A példa a Blank elrendezést használja, amely egy új bemutatóval együtt érkezik, és eltávolítja az első dia saját helyfoglalóit.
A beállítás hatókörének kiválasztása
Egy normál dia a masterét a ISlide::get_LayoutSlide és a ILayoutSlide::get_MasterSlide segítségével használja. A tulajdonság egyedi dián való beállítása csak azt a diát érinti. false átadása a LayoutSlide::set_ShowMasterShapes metódusnak elrejti a master grafikákat azokat a diákra, amelyek ezt a megosztott elrendezést használják, még akkor is, ha saját beállításuk true. Ahhoz, hogy csak egy dián rejtsen el grafikákat, módosítsa a dia tulajdonságát, és hagyja változatlanul a megosztott elrendezést.
A beállítás nem támogatott a master dia láthatóságának vezérlésére. A masteren mindig false-t ad vissza, és true érték beállítása System::NotSupportedException-t dob. Használja normál dián vagy elrendezésen.
A grafikák és a háttér megkülönböztetése
| Művelet | Hatás |
|---|---|
| Master grafikák elrejtése | Az örökölt master alakzatok láthatóságát szabályozza, anélkül hogy törölné őket vagy megváltoztatná a dia saját alakzatait. |
| A dia háttér kitöltésének módosítása | Megváltoztatja a háttér színét, gradiensét vagy képét. A master grafikák külön alakzatok, és láthatóak maradhatnak ezen háttér felett. Lásd a Presentation Background oldalt. |
| Alakzat törlése a masterből | Eltávolítja a megosztott forrás alakzatot, így már nem érhető el semmilyen, a mastert használó dián. |
Helyfoglalók kezelése
A helyfoglalók általában az elrendezés diákon vannak definiálva. A master slide biztosítja a megosztott stílust és témát, amelyet az elrendezések örökölnek, míg minden elrendezés meghatározza, mely helyfoglalók érhetők el és hol vannak elhelyezve.
A PowerPointban a helyfoglaló parancsok a Slide Master nézetben érhetők el.

Új helyfoglalók hozzáadásához az Aspose.Slides használatával, dolgozzon a masterhez tartozó elrendezés diával:
#include <DOM/ILayoutPlaceholderManager.h>
#include <DOM/ILayoutSlide.h>
#include <DOM/IMasterLayoutSlideCollection.h>
#include <DOM/IMasterSlide.h>
#include <DOM/ISlideCollection.h>
#include <DOM/Presentation.h>
#include <DOM/SlideLayoutType.h>
#include <Export/SaveFormat.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
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();
Megformázhatja a master dián már létező helyfoglaló alakzatokat is. A következő példa megtalálja a cím helyfoglalót és lineáris gradiens kitöltést alkalmaz rá:
#include <DOM/FillType.h>
#include <DOM/GradientShape.h>
#include <DOM/IAutoShape.h>
#include <DOM/IFillFormat.h>
#include <DOM/IGradientFormat.h>
#include <DOM/IGradientStopCollection.h>
#include <DOM/IMasterSlide.h>
#include <DOM/IPlaceholder.h>
#include <DOM/IShapeCollection.h>
#include <DOM/PlaceholderType.h>
#include <DOM/Presentation.h>
#include <Export/SaveFormat.h>
#include <drawing/color.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System::Drawing;
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();

További helyfoglaló és szövegformázási lehetőségekért lásd a Set Prompt Text in Placeholder és a Text Formatting oldalakat.
Slide Master háttér módosítása
A master háttér az elrendezések és diák által öröklődik, amelyek nem írják felül. A következő példa egy egyszínes háttérszínt állít be az első master diára:
#include <DOM/BackgroundType.h>
#include <DOM/FillType.h>
#include <DOM/IBackground.h>
#include <DOM/IColorFormat.h>
#include <DOM/IFillFormat.h>
#include <DOM/IMasterSlide.h>
#include <DOM/Presentation.h>
#include <Export/SaveFormat.h>
#include <drawing/color.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System::Drawing;
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();
Kapcsolódó témákért lásd a Presentation Background és a Presentation Theme oldalakat.
Slide Master klónozása egy másik bemutatóba
A IMasterSlideCollection::AddClone használatával egy mester diát másolhat egy másik bemutatóba. A másolt master aztán az elrendezések és diák által a célbemutatóban használható.
#include <DOM/IMasterSlideCollection.h>
#include <DOM/Presentation.h>
#include <Export/SaveFormat.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
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();
Ha normál diák másolására is szükség van a masterrel együtt, lásd a Clone Slides oldalt.
Több Slide Master hozzáadása
Egy bemutató több mester diát is tartalmazhat. Ez akkor hasznos, amikor a különböző szakaszok különböző arculatot, oldalstruktúrát vagy téma beállításokat igényelnek.

A következő példa klónozza az alapértelmezett mastert, más háttérrel látja el a klónt, létrehoz egy elrendezést a klónozott master alatt, és hozzáad egy új diát, amely ezt az elrendezést használja:
#include <DOM/BackgroundType.h>
#include <DOM/FillType.h>
#include <DOM/IBackground.h>
#include <DOM/IColorFormat.h>
#include <DOM/IFillFormat.h>
#include <DOM/IMasterLayoutSlideCollection.h>
#include <DOM/IMasterSlide.h>
#include <DOM/IMasterSlideCollection.h>
#include <DOM/ISlideCollection.h>
#include <DOM/Presentation.h>
#include <DOM/SlideLayoutType.h>
#include <Export/SaveFormat.h>
#include <drawing/color.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System::Drawing;
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 Master összehasonlítása
A master diák összehasonlíthatók az IBaseSlide örökölt Equals metódusával. Az összehasonlítás ellenőrzi a szerkezetet és a statikus tartalmat, mint például alakzatok, szöveg, formázás, animációk és egyéb dia beállítások. Nem hasonlítja össze az egyedi azonosítókat, például a dia ID-ket, vagy a dinamikus helyfoglaló értékeket, mint a jelenlegi dátum.
#include <DOM/IMasterSlide.h>
#include <DOM/IMasterSlideCollection.h>
#include <DOM/Presentation.h>
#include <system/console.h>
using namespace Aspose::Slides;
using namespace System;
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();
További információért lásd a Compare Presentation Slides oldalt.
A Slide Master nézet beállítása alapértelmezett nézetként
A ViewProperties set_LastView metódusával szabályozhatja, hogy a PowerPoint melyik nézetet nyissa meg először. A következő példa a bemutatót Slide Master nézetben nyitja meg:
#include <DOM/IViewProperties.h>
#include <DOM/Presentation.h>
#include <Export/SaveFormat.h>
#include <ViewType.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
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();
További nézetbeállításokért lásd a Save Presentation oldalt.
Használaton kívüli Master diák eltávolítása
Néhány bemutató olyan master diákat tartalmaz, amelyeket már egyetlen normál dia sem használ. A használaton kívüli master diák eltávolítása csökkentheti a fájlméretet és egyszerűsítheti a sablon karbantartását.
A használaton kívüli master diák eltávolításához használja a MasterSlideCollection::RemoveUnused metódust a get_Masters() gyűjteményből:
#include <DOM/IMasterSlideCollection.h>
#include <DOM/Presentation.h>
#include <Export/SaveFormat.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
auto presentation = System::MakeObject<Presentation>(u"presentation.pptx");
presentation->get_Masters()->RemoveUnused(true);
presentation->Save(u"presentation-clean.pptx", SaveFormat::Pptx);
presentation->Dispose();
Alkalmazhatja az alacsony kódú Compress::RemoveUnusedMasterSlides metódust is:
#include <DOM/Presentation.h>
#include <Export/SaveFormat.h>
#include <LowCode/Compress.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace Aspose::Slides::LowCode;
auto presentation = System::MakeObject<Presentation>(u"presentation.pptx");
LowCode::Compress::RemoveUnusedMasterSlides(presentation);
presentation->Save(u"presentation-clean.pptx", SaveFormat::Pptx);
presentation->Dispose();
FAQ
Mi a különbség egy slide master és egy layout slide között?
A slide master közös tervezési beállításokat határoz meg, mint a téma, háttér, közös alakzatok és szövegstílusok. Egy layout slide egy master slide-hez tartozik, és egy konkrét helyfoglaló elrendezést definiál. Egy normál dia egy layout slide-ot használ, így mind a layout, mind a master beállításait örökli.
Tartalmazhat egy bemutató több slide master-t?
Igen. Egy bemutató több slide master-t is tartalmazhat. Több master használható, ha a különböző szakaszokhoz különböző vizuális rendszerek vagy arculatok szükségesek.
Hol kell helyfoglalókat hozzáadni: a master slide-hez vagy a layout slide-hez?
A legtöbb esetben a helyfoglalókat a layout diákhoz kell hozzáadni. A közös vizuális elemeket és közös formázást a master slide-re helyezze, majd a tartalmi helyfoglalókat azokban a layoutokban, amelyeket a normál diák használnak.
Törölhetek egy még használt master slide-ot?
Nem. Egy master slide, amelynek függő diái vannak, nem távolítható el biztonságosan. Először helyezze át ezeket a diákat egy másik master alá tartozó layoutokra, vagy használja a nem használt master takarítási módszert, amely csak a nem használt master-diákat távolítja el.