Hogyan formázzunk szöveget C++-ban
Aspose.Slides FOSS for C++ finomhangolt szövegformázást biztosít a PortionFormat osztályon keresztül. A Portion a legkisebb önálló szövegegység; egy bekezdésen belüli egyetlen formázási futathoz (run) térképezhető. Ez az útmutató bemutatja, hogyan lehet félkövér, dőlt, betűméret és szín formázást alkalmazni a prezentáció szövegére.
Lépésről‑lépésre útmutató
1. lépés: Könyvtár felépítése és összekapcsolása
git clone https://github.com/aspose-slides-foss/Aspose.Slides-FOSS-for-Cpp.git
cd Aspose.Slides-FOSS-for-Cpp && mkdir build && cd build
cmake .. && cmake --build .2. lépés: Alakzat hozzáadása szövegkerettel
A szöveg formázása előtt adjon hozzá egy alakzatot, és állítsa be a szövegtartalmát a shape.text_frame()->set_text() segítségével.
#include <Aspose/Slides/Foss/presentation.h>
int main() {
namespace asf = Aspose::Slides::Foss;
asf::Presentation prs;
auto& slide = prs.slides()[0];
auto& shape = slide.shapes().add_auto_shape(
asf::ShapeType::RECTANGLE, 50, 50, 500, 150);
shape.text_frame()->set_text("Default text: will be formatted");
prs.save("output.pptx", asf::SaveFormat::PPTX);
return 0;
}3. lépés: TextFrame elérése
shape.text_frame() visszaad egy mutatót a forma TextFrame-jére. Használja a ->-t, hogy metódusokat hívjon meg rajta.
auto* tf = shape.text_frame(); // pointer to the shape's text frame
tf->set_text("your text here");A TextFrame Paragraph objektumot tartalmaz (tf->paragraphs()). Minden Paragraph Portion objektumot tartalmaz (paragraph.portions()).
4. lépés: Félkövér és dőlt formázás alkalmazása
Használja a portion_format().set_font_bold() és portion_format().set_font_italic(). Ezek a metódusok elfogadják a NullableBool::TRUE, NullableBool::FALSE vagy NullableBool::NOT_DEFINED (öröklődik a masterből).
#include <Aspose/Slides/Foss/presentation.h>
int main() {
namespace asf = Aspose::Slides::Foss;
asf::Presentation prs;
auto& slide = prs.slides()[0];
auto& shape = slide.shapes().add_auto_shape(
asf::ShapeType::RECTANGLE, 50, 50, 500, 150);
shape.text_frame()->set_text("Bold and italic text");
auto* tf = shape.text_frame();
auto& fmt = tf->paragraphs()[0].portions()[0].portion_format();
fmt.set_font_bold(asf::NullableBool::TRUE);
fmt.set_font_italic(asf::NullableBool::TRUE);
prs.save("bold-italic.pptx", asf::SaveFormat::PPTX);
return 0;
}5. lépés: Betűméret és szín beállítása
Állítsa be portion_format().set_font_height() a mérethez (pontban), és használja fill_format()‑t a színhez.
#include <Aspose/Slides/Foss/presentation.h>
int main() {
namespace asf = Aspose::Slides::Foss;
asf::Presentation prs;
auto& slide = prs.slides()[0];
auto& shape = slide.shapes().add_auto_shape(
asf::ShapeType::RECTANGLE, 50, 50, 500, 150);
shape.text_frame()->set_text("Large corporate-blue heading");
auto* tf = shape.text_frame();
auto& fmt = tf->paragraphs()[0].portions()[0].portion_format();
fmt.set_font_height(32); // 32pt font
fmt.set_font_bold(asf::NullableBool::TRUE);
fmt.fill_format().set_fill_type(asf::FillType::SOLID);
fmt.fill_format().solid_fill_color().set_color(
asf::Color::from_argb(255, 0, 70, 127));
prs.save("colored-text.pptx", asf::SaveFormat::PPTX);
return 0;
}Color::from_argb(alpha, red, green, blue) minden csatornára 0-255 közötti értékeket fogad el.
6. lépés: Több rész egy bekezdésben
Egy bekezdés több, különböző formázású részt is tartalmazhat. Adj hozzá egy új Portion-t a bekezdés portions() gyűjteményéhez:
#include <Aspose/Slides/Foss/presentation.h>
int main() {
namespace asf = Aspose::Slides::Foss;
asf::Presentation prs;
auto& slide = prs.slides()[0];
auto& shape = slide.shapes().add_auto_shape(
asf::ShapeType::RECTANGLE, 50, 50, 600, 100);
shape.text_frame()->set_text(""); // start with empty text
auto* tf = shape.text_frame();
auto& paragraph = tf->paragraphs()[0];
// First portion: normal text
auto& portion1 = paragraph.portions()[0];
portion1.set_text("Normal text followed by ");
portion1.portion_format().set_font_height(20);
// Second portion: bold red text
asf::Portion portion2;
portion2.set_text("bold red text");
portion2.portion_format().set_font_height(20);
portion2.portion_format().set_font_bold(asf::NullableBool::TRUE);
portion2.portion_format().fill_format().set_fill_type(asf::FillType::SOLID);
portion2.portion_format().fill_format().solid_fill_color().set_color(
asf::Color::from_argb(255, 200, 0, 0));
paragraph.portions().add(portion2);
prs.save("mixed-format.pptx", asf::SaveFormat::PPTX);
return 0;
}Gyakori problémák és megoldások
A szöveg fekete marad a szín beállítása után
Győződjön meg róla, hogy a fill_format().set_fill_type(FillType::SOLID) be van állítva, mielőtt a színt hozzárendeli. A kitöltéstípus beállítása nélkül a színváltozás hatástalan lehet.
NullableBool::TRUE vs true
portion_format().set_font_bold() a NullableBool::TRUE-t várja, nem a C++ true-t. A true közvetlen átadása nem fog lefordulni, vagy a túlterhelés feloldásától függően meghatározatlan viselkedést eredményez.
A betűtípus nem jelenik meg a mentett fájlban
A set_latin_font() metódus beállítja a latin betűcsaládot. Ha nincs beállítva, a prezentáció témájának betűtípusa kerül felhasználásra. Az egyéni betűtípusokat be kell ágyazni, vagy elérhetőnek kell lenniük a megtekintő gépen.
Gyakran Ismételt Kérdések
Hogyan változtathatom meg a betűcsaládot?
Állítsa be portion_format().set_latin_font():
fmt.set_latin_font(asf::FontData("Arial"));FontData elfogadja a betűcsalád nevét karakterláncként.
Hogyan állíthatom be a bekezdés igazítását?
Használja paragraph_format().set_alignment():
tf.paragraphs()[0].paragraph_format().set_alignment(asf::TextAlignment::CENTER);Támogatott értékek: LEFT, CENTER, RIGHT, JUSTIFY.
Hogyan állíthatom be a sortávolságot?
Használja a paragraph_format().set_space_before() (pontok a bekezdés előtt) vagy paragraph_format().set_space_after() (pontok a bekezdés után) jelölést:
tf.paragraphs()[0].paragraph_format().set_space_before(12); // 12pt before
tf.paragraphs()[0].paragraph_format().set_space_after(6); // 6pt after