Diagram jelmagyarázat testreszabása prezentációkban C++ használatával
Áttekintés
Az Aspose.Slides for C++ lehetőséget biztosít a diagram jelmagyarázatának testreszabására a PowerPoint‑prezentációkban. Ez a cikk bemutatja, hogyan lehet elhelyezni és méretezni a jelmagyarázatot, beállítani a teljes jelmagyarázat betűméretét, formázni egy adott jelmagyarázat bejegyzést, valamint elrejteni vagy visszaállítani a kiválasztott bejegyzéseket.
A GYIK a kapcsolódó viselkedéseket is lefedi, beleértve a jelmagyarázat számára fenntartott helyet, a több soros címkék megjelenítését és a formázás öröklődését a prezentáció témájából.
Jelmagyarázat elhelyezése
Használd a jelmagyarázat set_X, set_Y, set_Width és set_Height metódusait a pozíció és a méret meghatározásához a diagram méretének törtarányaként.
Ez a példa egy prezentációt hoz létre, és egy alapértelmezett adatú összegzett oszlopdiagramot ad az első diára. A kívánt jelmagyarázat eltolásokat és méreteket a diagram szélességével és magasságával elosztva relatív értékké alakítja: a jelmagyarázat 50 ponttal eltolódik a diagram bal‑felső sarkától, és 100 × 100 pont méretű lesz.
#include <system/shared_ptr.h>
#include <DOM/Presentation.h>
#include <DOM/ISlide.h>
#include <DOM/IShapeCollection.h>
#include <DOM/Chart/ChartType.h>
#include <DOM/IChart.h>
#include <DOM/Chart/ILegend.h>
#include <Export/SaveFormat.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Charts;
using namespace Aspose::Slides::Export;
auto presentation = System::MakeObject<Presentation>();
auto slide = presentation->get_Slide(0);
auto chart = slide->get_Shapes()->AddChart(ChartType::ClusteredColumn, 50, 50, 500, 500);
// Express the legend's position and size relative to the chart.
chart->get_Legend()->set_X(50 / chart->get_Width());
chart->get_Legend()->set_Y(50 / chart->get_Height());
chart->get_Legend()->set_Width(100 / chart->get_Width());
chart->get_Legend()->set_Height(100 / chart->get_Height());
presentation->Save(u"legend_position.pptx", SaveFormat::Pptx);
Jelmagyarázat betűméretének beállítása
Használd a jelmagyarázat get_TextFormat metódusát a szövegformázás eléréséhez, és a set_FontHeight metódust a betűméret pontban történő beállításához.
Ez a példa egy alapértelmezett adatú diagramot hoz létre, és a jelmagyarázat szövegét 20 pontra állítja. Emellett letiltja a függőleges tengely automatikus határait, és -5‑től 10‑ig terjedő tartományt állít be.
#include <system/shared_ptr.h>
#include <DOM/Presentation.h>
#include <DOM/ISlide.h>
#include <DOM/IShapeCollection.h>
#include <DOM/Chart/ChartType.h>
#include <DOM/IChart.h>
#include <DOM/Chart/ILegend.h>
#include <DOM/Chart/IChartTextFormat.h>
#include <DOM/Chart/IAxesManager.h>
#include <DOM/Chart/IAxis.h>
#include <DOM/Chart/IChartPortionFormat.h>
#include <Export/SaveFormat.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Charts;
using namespace Aspose::Slides::Export;
auto presentation = System::MakeObject<Presentation>();
auto slide = presentation->get_Slide(0);
auto chart = slide->get_Shapes()->AddChart(ChartType::ClusteredColumn, 50, 50, 600, 400);
chart->get_Legend()->get_TextFormat()->get_PortionFormat()->set_FontHeight(20);
chart->get_Axes()->get_VerticalAxis()->set_IsAutomaticMinValue(false);
chart->get_Axes()->get_VerticalAxis()->set_MinValue(-5);
chart->get_Axes()->get_VerticalAxis()->set_IsAutomaticMaxValue(false);
chart->get_Axes()->get_VerticalAxis()->set_MaxValue(10);
presentation->Save(u"legend_font_size.pptx", SaveFormat::Pptx);
Egyedi jelmagyarázat bejegyzés betűméretének beállítása
Használd a jelmagyarázat get_Entries metódusa által visszaadott gyűjteményt egy adott bejegyzés formázásához. A bejegyzések indexelése nullától indul, így a 1 index a második bejegyzésre vonatkozik.
Ez a példa egy alapértelmezett adatú, több sorozattal rendelkező összegzett oszlopdiagramot hoz létre. A második jelmagyarázat bejegyzést félkövér, dőlt és 20 pontos kék szöveggel formázza.
#include <system/shared_ptr.h>
#include <drawing/color.h>
#include <DOM/Presentation.h>
#include <DOM/ISlide.h>
#include <DOM/IShapeCollection.h>
#include <DOM/Chart/ChartType.h>
#include <DOM/IChart.h>
#include <DOM/Chart/ILegend.h>
#include <DOM/Chart/IChartTextFormat.h>
#include <DOM/Chart/ILegendEntryCollection.h>
#include <DOM/Chart/ILegendEntryProperties.h>
#include <DOM/Chart/IChartPortionFormat.h>
#include <DOM/NullableBool.h>
#include <DOM/IFillFormat.h>
#include <DOM/FillType.h>
#include <DOM/IColorFormat.h>
#include <Export/SaveFormat.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Charts;
using namespace Aspose::Slides::Export;
auto presentation = System::MakeObject<Presentation>();
auto slide = presentation->get_Slide(0);
auto chart = slide->get_Shapes()->AddChart(ChartType::ClusteredColumn, 50, 50, 600, 400);
auto textFormat = chart->get_Legend()->get_Entries()->idx_get(1)->get_TextFormat();
textFormat->get_PortionFormat()->set_FontBold(NullableBool::True);
textFormat->get_PortionFormat()->set_FontHeight(20);
textFormat->get_PortionFormat()->set_FontItalic(NullableBool::True);
textFormat->get_PortionFormat()->get_FillFormat()->set_FillType(FillType::Solid);
textFormat->get_PortionFormat()->get_FillFormat()->get_SolidFillColor()->set_Color(System::Drawing::Color::get_Blue());
presentation->Save(u"legend_entry_format.pptx", SaveFormat::Pptx);
Egyéni jelmagyarázat bejegyzések elrejtése
Egy segédsorozat kizárásához a jelmagyarázatból, miközben az adat továbbra is látható, hívd meg az ILegendEntryProperties::set_Hide metódust true értékkel a IChartSeries::get_RelatedLegendEntry segítségével. Ez csak a kiválasztott bejegyzést rejti el; a sorozatot vagy adatpontjait nem távolítja el. Ezzel szemben az IChart::set_HasLegend false értékkel való hívása az egész jelmagyarázatot elrejti.
Az alábbi példa egy több sorozatos, alapértelmezett adatú összegzett oszlopdiagramot hoz létre. A második sorozat jelmagyarázat bejegyzését (index 1) elrejti, majd menti a prezentációt. Ezután a bejegyzést set_Hide false értékkel visszaállítja, és egy második példányt ment el. A oszlopok mindkét fájlban láthatóak maradnak.
#include <system/shared_ptr.h>
#include <DOM/Presentation.h>
#include <DOM/ISlide.h>
#include <DOM/IShapeCollection.h>
#include <DOM/Chart/ChartType.h>
#include <DOM/IChart.h>
#include <DOM/Chart/ILegend.h>
#include <DOM/Chart/ILegendEntryProperties.h>
#include <DOM/Chart/IChartData.h>
#include <DOM/Chart/IChartSeriesCollection.h>
#include <DOM/Chart/IChartSeries.h>
#include <Export/SaveFormat.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Charts;
using namespace Aspose::Slides::Export;
auto presentation = System::MakeObject<Presentation>();
auto slide = presentation->get_Slide(0);
auto chart = slide->get_Shapes()->AddChart(ChartType::ClusteredColumn, 50, 50, 600, 400);
chart->set_HasLegend(true);
auto legendEntry = chart->get_ChartData()->get_Series()->idx_get(1)->get_RelatedLegendEntry();
legendEntry->set_Hide(true);
presentation->Save(u"hidden_legend_entry.pptx", SaveFormat::Pptx);
// Visszaállítja ugyanazt a bejegyzést a diagram adatainak módosítása nélkül.
legendEntry->set_Hide(false);
presentation->Save(u"restored_legend_entry.pptx", SaveFormat::Pptx);
Az alábbi összehasonlítás ugyanazt a diagramot mutatja, egyszer az összes bejegyzéssel látható állapotban, egyszer a második bejegyzés elrejtve. A második sorozat oszlopai változatlanok maradnak.

Oszlop-, sáv- és vonaldiagramok esetén a jelmagyarázat bejegyzések a sorozatokat azonosítják. Kördiagramok esetén egyedi adatpontokat (szeleteket) azonosítanak, ezért ilyenkor a IChartDataPoint::get_RelatedLegendEntry metódust kell a kiválasztott szeleten használni. Az API dokumentálja ezt a pont‑szintű metódust a Pie, Pie3D, ExplodedPie, ExplodedPie3D, PieOfPie és BarOfPie diagramtípusokhoz. Ne feltételezd, hogy ez a módszer a gyűrűdiagramokra is vonatkozik, mivel azok nincsenek a felsoroltak között.
GYIK
Kijelenthetem, hogy a diagram helyet foglaljon a jelmagyarázatnak az átfedés helyett?
Igen. Hívd meg a set_Overlay metódust false értékkel, hogy a jelmagyarázat számára helyet reserválj, ahelyett, hogy átfedné a diagramterületet.
Létrehozhatok több soros jelmagyarázat címkéket?
Igen. A hosszú címkék megtörnek, ha a rendelkezésre álló szélesség nem elegendő. Új sor karaktereket is használhatsz a sorozatnevekben a sortörés kérése érdekében.
Hogyan tehetem, hogy a jelmagyarázat kövesse a prezentáció téma színsémáját?
Hagyd a jelmagyarázat színeit, kitöltéseit és betűtípusait beállítatlanul, hogy örökölje a téma formázását. Az explicit formázás felülírja a megfelelő téma beállításokat.