Kuinka muotoilla tekstiä C++:ssa

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

Katso myös

 Suomi