Kuinka muotoilla tekstiä C++:ssa
Aspose.Slides FOSS for C++ tarjoaa hienojakoista tekstin muotoilua PortionFormat-luokan kautta. Portion on pienin itsenäinen tekstiyksikkö; se vastaa yhtä muotoilurunkoa kappaleessa. Tämä opas näyttää, miten tekstiin esityksessä voidaan soveltaa lihavointia, kursivointia, fonttikokoa ja väriä.
Vaiheittainen opas
Vaihe 1: Rakenna ja linkitä kirjasto
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 .Vaihe 2: Lisää muoto, jossa on tekstikehys
Ennen tekstin muotoilua lisää muoto ja aseta sen tekstisisältö shape.text_frame()->set_text()‑menetelmällä.
#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;
}Vaihe 3: Pääsy TextFrameen
shape.text_frame() palauttaa osoittimen muodon TextFrame:een. Käytä -> kutsuaksesi sen metodeja.
auto* tf = shape.text_frame(); // pointer to the shape's text frame
tf->set_text("your text here");TextFrame sisältää Paragraph objektia (tf->paragraphs()). Jokainen Paragraph sisältää Portion objektia (paragraph.portions()).
Vaihe 4: Lisää lihavointi ja kursiivi
Käytä portion_format().set_font_bold() ja portion_format().set_font_italic(). Nämä menetelmät hyväksyvät NullableBool::TRUE, NullableBool::FALSE tai NullableBool::NOT_DEFINED (periytyvät masterista).
#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;
}Vaihe 5: Aseta fonttikoko ja väri
Aseta portion_format().set_font_height() koon (pisteinä) ja käytä fill_format() väriin.
#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) hyväksyy arvot 0‑255 jokaiselle kanavalle.
Vaihe 6: Useita osia yhdessä kappaleessa
Yksi kappale voi sisältää useita osia, joilla on eri muotoilu. Lisää uusi Portion kappaleen portions() kokoelmaan:
#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;
}Yleisiä ongelmia ja korjauksia
Teksti näkyy mustana, vaikka väri on asetettu
Varmista, että fill_format().set_fill_type(FillType::SOLID) on asetettu ennen värin määrittämistä. Jos täyttötyyppiä ei aseteta, värin muutos ei välttämättä vaikuta.
NullableBool::TRUE vs true
portion_format().set_font_bold() odottaa NullableBool::TRUE, ei C++ true. true:n suora välittäminen ei käänny tai aiheuttaa määrittelemättömän käyttäytymisen riippuen ylikuormitusratkaisusta.
Fontti ei näy tallennetussa tiedostossa
set_latin_font()-menetelmä asettaa latinalaisen fonttiperheen. Jos sitä ei ole asetettu, käytetään esityksen teeman fonttia. Mukautetut fontit on upotettava tai niiden on oltava saatavilla katselukoneessa.
Usein kysytyt kysymykset
Miten vaihdan fonttiperheen?
Aseta portion_format().set_latin_font():
fmt.set_latin_font(asf::FontData("Arial"));FontData hyväksyy fonttiperheen nimen merkkijonona.
Kuinka asetetaan kappaleen tasaus?
Käytä paragraph_format().set_alignment():
tf.paragraphs()[0].paragraph_format().set_alignment(asf::TextAlignment::CENTER);Tuetut arvot: LEFT, CENTER, RIGHT, JUSTIFY.
Kuinka asetetaan riviväli?
Käytä paragraph_format().set_space_before() (pisteet ennen kappaletta) tai paragraph_format().set_space_after() (pisteet kappaleen jälkeen):
tf.paragraphs()[0].paragraph_format().set_space_before(12); // 12pt before
tf.paragraphs()[0].paragraph_format().set_space_after(6); // 6pt after