C++'ta Metin Nasıl Biçimlendirilir

C++'ta Metin Nasıl Biçimlendirilir

Aspose.Slides FOSS for C++ provides fine-grained text formatting through the PortionFormat sınıf. A Portion metnin en küçük bağımsız birimidir; bir paragrafta tek bir biçimlendirme çalışmasına karşılık gelir. Bu kılavuz, bir sunumdaki metne kalın, italik, yazı tipi boyutu ve renk biçimlendirmesinin nasıl uygulanacağını gösterir.

Adım Adım Kılavuz

Adım 1: Kütüphaneyi Derleyin ve Bağlayın

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 .

Adım 2: Metin Çerçevesi Olan Bir Şekil Ekleyin

Metni biçimlendirmeden önce, bir şekil ekleyin ve metin içeriğini şu şekilde ayarlayın 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;
}

Adım 3: TextFrame’e Erişin

shape.text_frame() şeklinin bir işaretçisini döndürür TextFrame. Kullan -> üzerinde metodları çağırmak için.

auto* tf = shape.text_frame();          // pointer to the shape's text frame
tf->set_text("your text here");

Bir TextFrame içerir Paragraph nesneler (tf->paragraphs()). Her Paragraph içerir Portion nesneler (paragraph.portions()).


Adım 4: Kalın ve İtalik Biçimlendirmeyi Uygulayın

Kullan portion_format().set_font_bold() ve portion_format().set_font_italic(). Bu yöntemler kabul eder NullableBool::TRUE, NullableBool::FALSE, ya da NullableBool::NOT_DEFINED (ana daldan miras al).

#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;
}

Adım 5: Yazı Tipi Boyutunu ve Rengini Ayarlayın

Ayarla portion_format().set_font_height() boyut için (puan cinsinden) ve kullan fill_format() renk için.

#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) her kanal için 0-255 değerlerini kabul eder.


Adım 6: Tek Bir Paragrafta Birden Çok Bölüm

Tek bir paragraf, farklı biçimlendirmelere sahip birden fazla bölüm içerebilir. Yeni bir Portion paragrafın portions() koleksiyonuna:

#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;
}

Yaygın Sorunlar ve Çözümler

Renk ayarlandıktan sonra bile metin siyah görünüyor

Güvence sağlayın fill_format().set_fill_type(FillType::SOLID) renk atanmasından önce ayarlanır. Dolgu türü ayarlanmadan, renk değişikliği etkisiz kalabilir.

NullableBool::TRUE vs true

portion_format().set_font_bold() bekler NullableBool::TRUE, C++ değil true. Geçmek true doğrudan derlenmez veya aşırı yükleme çözümlemesine bağlı olarak tanımsız davranışa sahip olabilir.

Kaydedilen dosyada yazı tipi görünmüyor.

Bu set_latin_font() metod Latin yazı tipi ailesini ayarlar. Ayarlanmazsa, sunum teması yazı tipi kullanılır. Özel yazı tipleri gömülmüş olmalı veya görüntüleme makinesinde mevcut olmalıdır.


Sık Sorulan Sorular

Yazı tipi ailesini nasıl değiştiririm?

Ayarla portion_format().set_latin_font():

fmt.set_latin_font(asf::FontData("Arial"));

FontData yazı tipi ailesi adını bir dize olarak kabul eder.

Paragraf hizalamasını nasıl ayarlarım?

Kullan paragraph_format().set_alignment():

tf.paragraphs()[0].paragraph_format().set_alignment(asf::TextAlignment::CENTER);

Desteklenen değerler: LEFT, CENTER, RIGHT, JUSTIFY.

Satır aralığını nasıl ayarlarım?

Kullan paragraph_format().set_space_before() (paragraftan önce puanlar) veya paragraph_format().set_space_after() (paragraftan sonra puanlar):

tf.paragraphs()[0].paragraph_format().set_space_before(12); // 12pt before
tf.paragraphs()[0].paragraph_format().set_space_after(6);   // 6pt after

Ayrıca Bakınız

 Türkçe