Hoe tekst opmaken in C++
Aspose.Slides FOSS for C++ biedt fijnmazige tekstopmaak via de PortionFormat-klasse. Een Portion is de kleinste onafhankelijke eenheid van tekst; het komt overeen met een enkele opmaakrun binnen een alinea. Deze gids laat zien hoe u vet, cursief, lettergrootte en kleuropmaak op tekst in een presentatie toepast.
Stapsgewijze handleiding
Stap 1: Bouw en link de bibliotheek
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 .Stap 2: Voeg een vorm met een tekstvak toe
Voeg, voordat u tekst opmaakt, een vorm toe en stel de tekstinhoud in via shape.text_frame()->set_text().
#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;
}Stap 3: Toegang tot het TextFrame
shape.text_frame() retourneert een pointer naar de TextFrame van de vorm. Gebruik -> om methoden daarop aan te roepen.
auto* tf = shape.text_frame(); // pointer to the shape's text frame
tf->set_text("your text here");Een TextFrame bevat Paragraph objecten (tf->paragraphs()). Elke Paragraph bevat Portion objecten (paragraph.portions()).
Stap 4: Vet- en cursieve opmaak toepassen
Gebruik portion_format().set_font_bold() en portion_format().set_font_italic(). Deze methoden accepteren NullableBool::TRUE, NullableBool::FALSE of NullableBool::NOT_DEFINED (geërfd van master).
#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;
}Stap 5: Lettergrootte en kleur instellen
Stel portion_format().set_font_height() in voor grootte (in punten) en gebruik fill_format() voor kleur.
#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) accepteert waarden 0-255 voor elk kanaal.
Stap 6: Meerdere delen in één alinea
Een enkele alinea kan meerdere delen met verschillende opmaak bevatten. Voeg een nieuwe Portion toe aan de portions()-collectie van een alinea:
#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;
}Veelvoorkomende problemen en oplossingen
Tekst verschijnt zwart, zelfs na het instellen van kleur
Zorg ervoor dat fill_format().set_fill_type(FillType::SOLID) is ingesteld voordat u de kleur toewijst. Zonder het instellen van het vultype heeft de kleurverandering mogelijk geen effect.
NullableBool::TRUE vs true
portion_format().set_font_bold() verwacht NullableBool::TRUE, niet de C++ true. Het rechtstreeks doorgeven van true zal niet compileren of zal, afhankelijk van de overload‑resolutie, ongedefinieerd gedrag vertonen.
Lettertype verschijnt niet in het opgeslagen bestand
De set_latin_font()-methode stelt de Latijnse lettertypefamilie in. Als deze niet is ingesteld, wordt het lettertype van het presentatiethema gebruikt. Aangepaste lettertypen moeten worden ingesloten of beschikbaar zijn op de weergavemachine.
Veelgestelde vragen
Hoe wijzig ik de lettertypefamilie?
Instellen portion_format().set_latin_font():
fmt.set_latin_font(asf::FontData("Arial"));FontData accepteert de naam van de lettertypefamilie als een string.
Hoe stel ik de alinea‑uitlijning in?
Gebruik paragraph_format().set_alignment():
tf.paragraphs()[0].paragraph_format().set_alignment(asf::TextAlignment::CENTER);Ondersteunde waarden: LEFT, CENTER, RIGHT, JUSTIFY.
Hoe stel ik de regelafstand in?
Gebruik paragraph_format().set_space_before() (punten vóór alinea) of paragraph_format().set_space_after() (punten na alinea):
tf.paragraphs()[0].paragraph_format().set_space_before(12); // 12pt before
tf.paragraphs()[0].paragraph_format().set_space_after(6); // 6pt after