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