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

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

Aspose.Slides FOSS for C++ ince ayarlı metin biçimlendirmesini PortionFormat sınıfı aracılığıyla sağlar. Bir Portion, metnin en küçük bağımsız birimidir; bir paragraftaki tek bir biçimlendirme koşuluna 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 Ekle

Metni biçimlendirmeden önce, bir şekil ekleyin ve metin içeriğini shape.text_frame()->set_text() aracılığıyla ayarlayın.

#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() şeklin TextFrame‘ine bir işaretçi döndürür. ->‘ı kullanarak onun üzerinde metodları çağırın.

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

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


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

portion_format().set_font_bold() ve portion_format().set_font_italic() kullanın. Bu yöntemler NullableBool::TRUE, NullableBool::FALSE veya NullableBool::NOT_DEFINED (master’dan miras alır) kabul eder.

#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 Ayarla

portion_format().set_font_height()‘i boyut (puan cinsinden) için ayarlayın ve fill_format()‘i renk için kullanın.

#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 Paragrafta Birden Fazla Bölüm

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

#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

Metin rengi ayarlandıktan sonra bile siyah görünüyor

Rengi atamadan önce fill_format().set_fill_type(FillType::SOLID) ayarlandığından emin olun. Dolgu türü ayarlanmazsa, renk değişikliği etkisiz kalabilir.

NullableBool::TRUE vs true

portion_format().set_font_bold(), C++ true yerine NullableBool::TRUE bekler. true‘yi doğrudan geçirmek derlenmez veya aşırı yükleme çözümlemesine bağlı olarak tanımsız davranışa neden olur.

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

set_latin_font() yöntemi Latin yazı tipi ailesini ayarlar. Ayarlanmamışsa, 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ça Sorulan Sorular

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

portion_format().set_latin_font()‘yi Ayarla:

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?

Paragraftan önce puanlar için paragraph_format().set_space_before() veya paragraftan sonra puanlar için paragraph_format().set_space_after() kullanın:

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

İlgili

 Türkçe